找到编号,仅保留最近的一个数字
3视图(30天)
显示旧的评论
你好,
我有一些数据从一个机器人运动现在我想找到最近的连续数字的389.387。到目前为止,这是我的代码,但是我不知道如何做“最接近389.387”循环。遗憾的是,没有点为389.387,所以我不能搜索这个数字……看看这张照片时,红圈区域附近的数字是389.387。我感激你的想法!
为i = 1:长度(z_irl)
如果z_irl (i) > 389.2 & & z_irl(我)< 389.5% z_irl是整个机器人运动,我试图只保留
%的数量在389.387附近
y_temp_r (i) = z_irl(我);
结束
% y_temp (i) = 0;
结束
[row_r, col_r value_r] =找到(y_temp_r);%与这条线我得到所需的所有信息的数字389.387附近
smallnr = 0 (1 b);% b是10,只有10个数字在389.387附近
为i = 1:长度(row_r)
区别(我)= abs (value_r (i) - 389.387);
结束
我= 2;
如果diff (row_r) = = 1%,这就是我不知道如何继续下去,我不知道如何
% < >查询只有连续的数字,它是
如果差异(张)<差异(我)%驾驶我疯了(ノಠ益ಠ)ノ彡┻━┻我想我需要两个计数器,
%一个用于计算的最小的数,另一个用于计算
发起(张)=差异(张);%的数量连续编号
其他的
发起(张)=区别(我);
结束
我=我+ 1;
结束
我用Matlab R2020b供学术使用。
0评论
接受的答案
图像分析
2021年6月4日
布鲁斯,我可能使用findpeaks信号和常数之间的区别:
[~,indexesOfPeaks] = findpeaks (abs (y - yConstant))
yCrossings = y (indexesOfPeaks)
这里有一个完整的演示:
t = linspace(0, 42岁,500);
时间= 42/5;
y = -100 * sin(2 *π* t /期)+ 389.387;
次要情节(2,1,1);
情节(t y“b -”,“线宽”2);
网格在;
标题(原始信号的);
包含(“时间”);
ylabel (“距离”);
yConstant = 389.387;
yDiff = abs (y - yConstant);
%让我们看到它。
次要情节(2,1,2);
情节(t, yDiff“b -”,“线宽”2);
网格在;
标题(“常数的差异”);
包含(“时间”);
ylabel (“距离”);
%的山峰
[~,indexesOfPeaks] = findpeaks (yDiff)
yCrossings = y (indexesOfPeaks)
%的阴谋在原始信号
次要情节(2,1,1);
持有在;
yCrossings情节(t (indexesOfPeaks),“r”。,“MarkerSize”15);
持有从;
你也可以尝试ismembertol(),但可能让你在每个位置和多个索引必须检测,选择最接近的一个。