How to detect peaks above a given threshold value?

52 ビュー (過去 30 日間)
Sudip Paudel
Sudip Paudel 2020 年 7 月 20 日
コメント済み: Sudip Paudel 2020 年 7 月 22 日
findpeaks() can detect multiple peaks if there is/are change in direction(s) even if the values are above the specified threshold (see arrows in the attached pdf file).
J=a vector;
findpeaks(J,'MinPeakHeight',Threshold);hold on;
yline(Threshold,'--','LineWidth',3);
hold off
  4 件のコメント
madhan ravi
madhan ravi 2020 年 7 月 20 日
What happens when you change it to 20?
Sudip Paudel
Sudip Paudel 2020 年 7 月 20 日
Hi Madhan, we will not detect other peaks if I change the threshold value to 20. My goal is to count it only once if the signal goes above the threshold value until it goes below the specified threshold.

サインインしてコメントする。

採用された回答

Rashedur Rahman
Rashedur Rahman 2020 年 7 月 20 日
Hi Sudip.
The function 'findpeaks' can take several input arguments for finding peaks according to criteria. You can use multiple arguments to adjust your peak finding algorithm. I will suggest you to read the description of 'findpeaks'. ('https://www.mathworks.com/help/signal/ref/findpeaks.html').
Another way is to apply a filter to smoothen the signal and then apply 'findpeaks'.

その他の回答 (1 件)

Image Analyst
Image Analyst 2020 年 7 月 20 日
編集済み: Image Analyst 2020 年 7 月 20 日
Try flattening the signal by subtracting that red trend line. Then set the values of the signal below the threshold to zero and then call findpeaks()
smoothedSignal = movmean(signal, 101);
flattenedSignal = signal - smoothedSignal;
flattenedSignal(flattenedSignal < someThreshold) = 0;
[peakValues, indexesOfPeaks] = findpeaks(flattenedSignal);
Attach your data in a .mat file if you need more help.
  1 件のコメント
Sudip Paudel
Sudip Paudel 2020 年 7 月 22 日
Thank you everyone for your answers.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDescriptive Statistics についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by