2016-05-27 5 views
0

私はこの信号のすべての大きなピーク値を取得しようとしている:ピーク検出Matlabの

enter image description here

あなたは小さい方のピークが続く一つの大きなピークがある見ることができる、と私はそれぞれを取得したいと最大ピークの値。私はすでにこれを試しました[pks1,locs1] = findpeaks(y1,'MinPeakHeight',??);しかし、私は何の代わりに書くことができます見つけることができません??信号が毎回同じではないことを知っています(もちろん、ピークスキーマが大きくなりますが、時間間隔と振幅は変わる可能性があります)。私はstd()、mean()、max()を使って多くのことを試しましたが、どれも適切に動作しません。

どのように問題を解決できますか?

答えて

1

キーワード'MinPeakDistance'を使用して、2つのピークの間の最小距離を大きなピークとそれに続く小さなピークの間の距離よりわずかに高い値に設定してみることができます。ですから、例えば:

[pks1,locs1] = findpeaks(y1,'MinPeakDistance',0.3); 

編集: ピーク間の時間(と1次小さい方が)あなたは、おそらくいくつかの後処理を行う必要があるでしょう多くが変化した場合。最初に小さな2番目のピークを含むすべてのピークを見つけます。その後、あなたのピークの配列では、2つの隣人よりもかなり低いすべてのピークを取り除きます。

'MinPeakProminence'で手を加えてみることもできます。

一般に、これらの問題は、アルゴリズム精度の最後の数%に対して多くの較正を必要とし、普遍的な治療法はありません。

documentationの他のすべてのオプションもご覧ください。

関連する問題