我有{(1}}矩阵中的点(x,y)坐标,称为1206x2
。命令data
给出了这样的图片:
我使用plot(data(:,1),data(:,2))
命令在我的数据中找到了最大值:
findpeaks
然后在上一张图上绘制它们:
[pks,loc,smth] = findpeaks(data(:,2));
所以,问题是:切断我不需要的最大值的最简单方法是什么,我的意思是这张图片上红线以下的最大值: UPD: 我现在发现的最好方法是使用“MinPeakDistance”参数。
答案 0 :(得分:1)
尝试使用envelope
内置函数:
% generate signal
x = 1:200;
y = x.*sin(x/5).*sin(3*x);
% get its envelope
npeak = 2;
[yupper,ylower] = envelope(y,npeak,'peak');
plot(x,y,x,yupper)
然后您可以在此包络中添加/减去常量以沿y轴移动。
答案 1 :(得分:0)
在图中跳过点的最简单方法是使它们NaN
。我将假设您有一个变量redline
,其中包含您所有X值的Y值,以便redline(loc)
将返回峰值位置的截止值。您可以忽略曲线之外的peaks
:
>>pks(pks < redline(loc)) = NaN
>>plot(mod(:,1),mod(:,2),mod(loc,1),pks,'o')
答案 2 :(得分:0)