读书人

一个找寻最大值的有关问题

发布时间: 2013-03-25 15:43:04 作者: rapoo

一个找寻最大值的问题!
我对一个正弦波进行采样,我判断得到的点,找出其中的最大值,想在峰值出现的不久以后,就把峰值输出,也就是不能等到整个波形数据都收集完成,其中还可能会有刺而出现,要怎么解决整个问题呢,请大家指教!不知道发的地方对不对,但是长在这里混,发现牛人不少,可能能给我点儿指点吧~
[解决办法]
每过一段时间,就把当前时间段的最大值输出
[解决办法]
无非就是缓存一段时间的数据,根据静态或动态设置的刺的最大长度过滤掉刺,记录当前有效数据的趋势是正在变大/小……
[解决办法]
俺觉得这个问题的关键是如何有效地滤掉毛刺,然后才是找寻最大值。

如果是一个形状良好的正弦波,找寻最大值应该是不难的事情,1楼说的方式就可以,其中的“每过一段时间”可以理解为“每过正弦波的一个周期”。

要有效去掉毛刺,俺的想法如下:
根据正弦波的频率,可以知道波峰、波谷的大致位置,如果在远离波峰、波谷的位置采样得到了较大的值(绝对值),那就可以判定为毛刺。

如果频率是固定的,只是幅度上有变化,情况应该比较好处理。如果频率也是变化的,工程上处理起来会稍微嗦一些,大致方法应该都大不多。

另外一个高级一点的处理方法:
1. 先将正弦波进行FFT变换
2. 用低通滤波器(用软件也可以做到)去掉高频部分的内容(因为毛刺的频率总是很高的)
3. 再进行IFFT变换,这样得到的波形肯定是很好的
[解决办法]

引用:
俺觉得这个问题的关键是如何有效地滤掉毛刺,然后才是找寻最大值。

如果是一个形状良好的正弦波,找寻最大值应该是不难的事情,1楼说的方式就可以,其中的“每过一段时间”可以理解为“每过正弦波的一个周期”。

要有效去掉毛刺,俺的想法如下:
根据正弦波的频率,可以知道波峰、波谷的大致位置,如果在远离波峰、波谷的位置采样得到了较大的值(绝对值),那就可以判定为毛刺。

如果频率是固定的,只……


补充一下,“有效地滤掉毛刺,然后才是找寻最大值”并不是说先得到一个形状良好的波形后,再去寻找最大值,两者几乎是同时进行的。用FFT的那个方法除外。

读书人网 >C++

热点推荐