2017-08-08 94 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

看看答案。您需要使用特殊命令來訂購峯。 –