編輯:其實這並非意想不到的行爲,但我仍然需要一個解決方案。 findpeaks compares each element of data to its neighboring values.
函數findpeaks在MATLAB的信號處理工具箱中發生意外的行爲
我有數據,其中包含我用信號處理工具箱中的功能findpeaks檢測到的峯。有時,當我有兩個相同的值時,函數似乎不能正確檢測峯值。出現這種情況很rarly在我的數據,但這裏是一個示例來說明我的問題:
>> values
values =
-0.0324
-0.0371
-0.0393
-0.0387
-0.0331
-0.0280
-0.0216
-0.0134
-0.0011
0.0098
0.0217
0.0352
0.0467
0.0548
0.0639
0.0740
0.0813
0.0858 <-- here should be another peak
0.0858 <--
0.0812
0.0719
0.0600
0.0473
0.0353
0.0239
0.0151
0.0083
0.0034
-0.0001
-0.0025
-0.0043
-0.0057
-0.0048
-0.0038
-0.0026
0.0007
0.0043
0.0062
0.0083
0.0106
0.0111
0.0116
0.0102
0.0089
0.0057
0.0025
-0.0025
-0.0056
現在findpeaks函數只找到一個峯值:
>> [pks loc] = findpeaks(values)
pks =
0.0116
loc =
42
如果我繪製的數據,可以很明顯找到的峯值將會丟失18/19
位置的峯值之一,因爲它們的值均爲0.08579
。
什麼是找到那些缺失峯值的最佳方式?
請嘗試以下資源:http://www.billauer.co.il/peakdet.html,http://terpconnect.umd.edu/~toh/spectrum/PeakFindingandMeasurement.htm – Amro 2010-12-08 06:59:47