グラフ内のピークの検出

조회 수: 48 (최근 30일)
Naoki Ishibashi
Naoki Ishibashi 2016년 11월 9일
댓글: mizuki 2016년 11월 10일
以下のプログラムである点での3時間おきの気温をフーリエ変換しプロットしました。 次に添付のようにピークを検出しそのピーク値を出力し図示するようにしたいのですが、以下のプログラムでは図示できません。 図示し、ピーク値の大きい順に番号をふり、何番目までを出力と制限できればと考えています。 サイトをやって見たのですが、うまくいかず、何かアドバイス頂けると幸いです。
以下プログラムです
filename =('1.txt');
x = load(filename);
[pxx,w] = periodogram(x);
plot(w,10*log10(pxx))
pks = findpeaks(pxx);
xlabel('Frequency (Hz)')
ylabel('Power/Frequency (dB/Hz)')

채택된 답변

mizuki
mizuki 2016년 11월 9일
ピーク値の数を定めるには 'NPeaks' オプションを使用します。
また、ピーク値をソートするには 'SortStr' オプションを使用します。
これらオプションについては、 findpeaks のドキュメントの入力引数 > 名前/値のペアの引数 の項目に詳細が記載されています。
例えば、ピーク値の大きいものから5番目までを抽出したい場合は、以下のようなコードになります。
filename =('1.txt');
x = load(filename);
[pxx,w] = periodogram(x);
plot(w,10*log10(pxx))
xlabel('Frequency (Hz)')
ylabel('Power/Frequency (dB/Hz)')
[psor,lsor] = findpeaks(10*log10(pxx), w, 'NPeaks', 5, 'SortStr','descend');
findpeaks(10*log10(pxx), w, 'NPeaks', 5)
text(lsor+.02,psor,num2str((1:numel(psor))'))
最後のtextコマンドの部分は、ドキュメントの例 "ピークとその位置の検索" にあるものを使用しました。
  댓글 수: 3
Naoki Ishibashi
Naoki Ishibashi 2016년 11월 10일
ご丁寧にご回答頂き、本当にありがとうございます。 ご教授頂いた方法でうまくいきました。
mizuki
mizuki 2016년 11월 10일
Ishibashi さん、ご希望どおりで良かったです!
またわからない点がありましたらどんどんご質問してくださいね。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Scopes and Data Logging에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by