如何在 MATLAB 中找到信号峰值的 X 轴值

How to find X axis value against peak value of signal in MATLAB

我需要帮助找到 x 轴上与找到的峰值相对应的值。

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

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

我想找出 2 个峰的第一个和第三个峰的 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 轴峰值的点画一条垂直线吗?

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

您在 '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