findpeaksの閾値設定について
69 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ibuki Takahashi
il 14 Giu 2021
Commentato: Ibuki Takahashi
il 14 Giu 2021
変化が微小なグラフにおいて、findpeaksを用いたところ、ノイズ部分もpeak判定がされてしまい、適切なpeak値を求めることができませんでした。
閾値の設定を行い、この問題を解決したいと思っております。
できればプログラムの中で、「xの値が10以内の時に、y軸の値の最大値と最小値の差が3以上」のものを1つのpeak値として設定を行いたいと考えております。
私はmatlabの経験が浅いため、これ以上にもっと簡単な設定方法があれば、教えていただけると幸いです。
よろしくお願いします。
2 Commenti
Akira Agata
il 14 Giu 2021
y = f(x) の形で表される信号に対して「xの値が10以内の時に、y軸の値の最大値と最小値の差が3以上」を求めるには、findpeaks の 'MinPeakProminence' オプションを 3 に指定したうえで、見つかったピークのうち x < 10 のものを抽出すれば良いと思います。
「これ以上にもっと簡単な設定方法があれば」とのことですが、具体的な対象信号を確認しないと何とも言えませんので、よろしければ対象となる信号データファイルを添付頂けますでしょうか?
Risposta accettata
Akira Agata
il 14 Giu 2021
Modificato: Akira Agata
il 14 Giu 2021
@Ibuki Takahashi さん、ご説明ありがとうございます。
「xの値の範囲が10以下の時」という条件を、「ピークの半値全幅 (FWHM: Full Width at Half Maximum) が 10以下の時」と近似的に読み替え可能でしたら、'MaxPeakWidth' オプションを指定することで検出可能です。分かりやすくするために、簡単な例を作成してみました。
x = linspace(0,1,1000);
Pos = [1 3 5 7]/10;
Hgt = [2 5 5 1];
Wdt = [2 0.5 2 1]/100;
y = zeros(size(x));
for n = 1:length(Pos)
y = y + Hgt(n)*exp(-((x - Pos(n))/Wdt(n)).^2);
end
% yの最大と最小の差が3以上、かつFWHMが10以下を満たすピークを検出 (-> 左から2番目のピークのみが条件を満たす)
findpeaks(y,'MinPeakProminence',3,'MaxPeakWidth',10)
Più risposte (0)
Vedere anche
Categorie
Scopri di più su 記述統計 in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!