Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab FindPeaks过于敏感_Matlab_Signal Processing_Numerical Methods_Numerical - Fatal编程技术网

Matlab FindPeaks过于敏感

Matlab FindPeaks过于敏感,matlab,signal-processing,numerical-methods,numerical,Matlab,Signal Processing,Numerical Methods,Numerical,我使用Matlab的findpeaks函数来查找一维数组中的局部极大值。我的目标是计算最大值的数量,这就是我遇到问题的地方 FindPeak太敏感了。例如,试试这个 v=[3.6107,3.6109, 3.6110,3.6110, 3.6108, 3.6107,3.6105, 3.6105, 3.6105,3.6106,3.6108,3.6109,3.6109, 3.6108,3.6105,3.6100,3.6094,3.6087,3.6080, 3.6073, 3.6067, 3.6062

我使用Matlab的findpeaks函数来查找一维数组中的局部极大值。我的目标是计算最大值的数量,这就是我遇到问题的地方

FindPeak太敏感了。例如,试试这个

v=[3.6107,3.6109, 3.6110,3.6110, 3.6108, 3.6107,3.6105, 3.6105, 3.6105,3.6106,3.6108,3.6109,3.6109, 3.6108,3.6105,3.6100,3.6094,3.6087,3.6080,   3.6073, 3.6067, 3.6062,3.6058,3.6053,3.6048,3.6041,3.6032,3.6021,3.6008,3.5993,3.5977, 3.5960,3.5942,3.5925,3.5907,3.5889,3.5869,3.5846,3.5820,3.5789,3.5753];
[maxvals, maxind] = findpeaks(v)
你会得到一些极大值,而这显然只是一个数值伪影,而不是实际的极大值

您建议如何放宽参数以获得更好的结果


在Matlab 2014中,有一个MinPeakProminence参数应该可以解决这个问题,但它在2013a中似乎不起作用。有什么想法吗?

定义“过于敏感”。你预计会有多少高峰?在我的机器上,您的输入数据只产生2个检测到的峰值,这在我看来很合理?这取决于您的先验知识。例如,您可以指定threshold选项来设置峰值的最小阈值,或MinpeakhHeight。@WouterKuijsters,在我看来,我的数组有一个有效的最大值,而minor=2个数量级的较小凹凸。@hbaderts,threshold不会在这里限制数字,因为它分别查看每个最大值,和minpeakheight一样,它要么杀死这两个对象,要么什么也不改变。一个相当残酷的选择是事先平滑数据:[maxvals,maxind]=findpeaksmoothv,10