2017-08-08 56 views
0

我需要帮助找到x轴上的值,并找到相应的峰值。如何在MATLAB中查找信号峰值的X轴值

有没有什么办法可以通过查看峰值直接绘制一条直线,因为这个命令给出了y轴的峰值位置和值,但不幸的是我的x轴没有很好的定义。

因为我也使用了x_max_value = x(索引),但它没有给我正确的值。

我想找出两个峰值的第一和第三个峰值的x轴值的差异。这就是为什么我需要这个。

如何根据信号中发现的峰值找到X轴值。

我试过这些命令,但不幸的是没有工作。

  x_at = x(firstpeak_1_loc) 
      x_at = x(lastpeak_1_loc) 


    %  ind = find(f== lastpeak_2); 
     %  x(ind) 

所以这就是为什么我想直接在峰值下画一条直线来清楚地得到x轴值的原因。

 X = [2 3 4 5 10 7 8 9 5 6 ]; 
    Plot(x) 
    [pks,locs] = findpeaks(x) 

是否有可能在我找到峰值对x轴的点绘制垂直线,因为我有x轴的值问题?

我想找出两个峰值的第一和第三个峰值的x轴值的差异。这就是为什么我需要这个。

+0

是在这个它也解释了如何做东西我需要抱歉,但我仍然无法找到这个职位可能是由于搜索选择标准。 – Peter

回答

1

你有峰的“LOCS”的指数,如果你想订购的峰,在“findpeaks”使用排序选项:

clear; 
y = [2 3 4 5 10 7 8 15 5 6 ]; 
N=length(y); 
x=linspace(-6,4,N); % the data must contain x for each y 

[y_atpeak,locs] = findpeaks(y,'SortStr','descend'); 
x_atpeak = x(locs); 

plot(x,y,'r-',x_atpeak,y_atpeak,'go') 

if length(y_atpeak)>=1 
    Yhighest=y_atpeak(1) 
end 
if length(y_atpeak)>=2 
    Ysecond=y_atpeak(2) 
end 
+0

门迪巴雷尔是否也有可能找到第一高峰的第二大峰值手段,我有firstpeak_1 = pks(1),但是第二高峰的命令是什么。 – Peter

+0

看看答案。您需要使用特殊命令来订购峰。 –