グラフ内のピークの検出
조회 수: 48 (최근 30일)
이전 댓글 표시
以下のプログラムである点での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)')
댓글 수: 0
채택된 답변
mizuki
2016년 11월 9일
ピーク値の数を定めるには 'NPeaks' オプションを使用します。
また、ピーク値をソートするには 'SortStr' オプションを使用します。
例えば、ピーク値の大きいものから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
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!