【问题标题】:How to find X axis value against peak value of signal in MATLAB [duplicate]如何在MATLAB中找到X轴值与信号的峰值[重复]
【发布时间】:2017-08-08 09:10:10
【问题描述】:

我需要帮助来根据找到的峰值在 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 轴值的差异。这就是我需要这个的原因。

【问题讨论】:

  • 是的,这也解释了如何做我需要的东西对不起,但我仍然无法找到这篇文章可能是由于搜索选择标准。

标签: matlab machine-learning signal-processing


【解决方案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

【讨论】:

  • Mendi Barel 我是否也可以找到第一个峰值的第二大峰值平均值我有 firstpeak_1 = pks(1) 但第二个峰值的命令是什么。
  • 看答案。您需要使用特殊命令来订购峰。
猜你喜欢
  • 2019-08-12
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多