声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3010|回复: 6

[其他] 请教MATLAB:如何得到信号变换后的峰值位置?

[复制链接]
发表于 2006-7-6 09:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
比如功率谱图,它有几个明显的峰值,如果不通过图来直接得到峰值对应的频率,而用程序来完成搜索峰值位置,那应该怎样实现呢?(注:事先并不知道有几个峰值,只知道是一个长序列,各点值已知)

[ 本帖最后由 zhangnan3509 于 2007-7-4 15:37 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-7-7 23:28 | 显示全部楼层
求该序列中的极值?
仔细观察一下你的图形中,这些幅值满足的条件,或者说特点,然后把它转换为程序语言,应该就可以了。
发表于 2006-7-8 08:43 | 显示全部楼层
没仔细想过,可以试试寻找序列中前几个比序列均值大的数值
发表于 2006-11-2 13:53 | 显示全部楼层

极值判断

可以判断该点值是否大与其左右几个点得知
发表于 2006-11-3 23:10 | 显示全部楼层
请教MATLAB:如何得到信号变换后的峰值位置?

比如功率谱图,它有几个明显的峰值,如果不通过图来直接得到峰值对应的频率,而用程序来完成搜索峰值位置,那应该怎样实现呢?(注:事先并不知道有几个峰值,只知道是一个长序列,各点值已知)

感觉是这样吧
以前好像看到过类似的编程思想
不是知道一个长序列么,假设有200个时间点(i=1:1:200)
对应的应该是一个2维的图吧
先假设最大值Mmax=0
i=1:1:200
如果M(i)>Mmax
那么Mmax=M(i)
设定一个门槛值,比如为最大值的10%
即Mth=10%Mmax
i=1:1:100
如果M(i+1)>Mth并且M(i+1)-M(i)>Mth
那么Mmax=M(i+1)

或者
如果M(i+1)<-Mth并且M(i+1)-M(i)<-Mth
那么Mmax=M(i+1)

感觉意思就是拿每相邻两点来进行比较
这样就能明显得到那个点与相邻点比较
显得大了
那就是极值点吧
:)
发表于 2006-11-6 20:20 | 显示全部楼层
很简单啊.用[y,i]=max()得到第i给位置的最大,值是y.

评分

1

查看全部评分

发表于 2006-11-7 02:15 | 显示全部楼层
下面是happy给的方法

  1. data是你的数据,
  2. find(diff(sign(diff(data)))==-2)+1
  3. 找到极大值的位置

  4. find(diff(sign(diff(data)))==2)+1
  5. 找到极小值的位置

  6. data(find(diff(sign(diff(data)))==-2)+1)和
  7. data(find(diff(sign(diff(data)))==2)+1)
  8. 返回的是极大值和极小值
复制代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 18:54 , Processed in 0.065952 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表