首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MATLAB中根据信号的峰值求X轴值

如何在MATLAB中根据信号的峰值求X轴值
EN

Stack Overflow用户
提问于 2017-08-08 09:10:10
回答 1查看 430关注 0票数 0

我需要帮助,在x轴找到的值与峰值。

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

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

我想找出第一峰和第三峰的x轴值的差异。所以我才需要这个。

如何根据信号中的峰值求出X轴值。

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

代码语言:javascript
复制
           x_at = x( firstpeak_1_loc)
           x_at = x( lastpeak_1_loc)


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

这就是为什么我想直接在峰值下面画一条线,清楚地得到x轴值。

代码语言:javascript
复制
     X = [2 3 4 5 10 7 8 9 5 6 ];
     Plot(x)
    [pks,locs] = findpeaks(x)

我是否有可能在一个点上画一条垂直线,因为我对x轴的值有异议,所以找出了x轴的峰值?

我想找出第一峰和第三峰的x轴值的差异。所以我才需要这个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-08 09:18:42

您的峰值索引位于“locs”中,如果要对峰值排序,请在“findpeaks”中使用排序选项:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45564137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档