グラフの横軸の範囲を​指定し、findpe​aksで指定の数だけ​取り出す

16 views (last 30 days)
gs
gs on 15 Dec 2022
Commented: gs on 15 Dec 2022
FFTをかけた後のグラフに関して、x軸の指定範囲(1~5Hz)の中にあるピークを左から順に2つ取り出したいです。まだまだ初学者でfindpeaksのオプションを調べたのですがこれといったものが見つからなかったので、どのようにすればよいかご教授いただけると幸いです。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 15 Dec 2022
NPeaks ピークの最大数: 正の整数スカラー
返されるピークの最大数。正の整数スカラーとして指定します。findpeaks は入力データの最初の要素から演算を開始し、ピークの数が 'NPeaks' の値に達すると終了します。
高速フーリエ変換 - MATLAB fft (FFT の内挿) からサンプルとしてコードを拝借しました。
Fs = 80; T = 1/Fs; L = 65; t = (0:L-1)*T;
X = 3*cos(2*pi*2*t) + 2*cos(2*pi*4*t) + sin(2*pi*6*t);
n = 2^nextpow2(L); Y = fft(X,n); f = Fs*(0:(n/2))/n;
P2 = abs(Y/L); P1 = P2(1:n/2+1);
plot(f,P1,"-o"); % P1をサンプル波形とします
findpeaks(P1(1:20),'NPeaks',2); % グラフに表示する
[pks,locs] = findpeaks(P1(1:20),'NPeaks',2) % 値を取り出す
pks = 1×2
1.4997 0.9831
locs = 1×2
4 8
グラフの横軸の範囲は、入力データ範囲を指定して入力する方法しか見つかりませんでした。サンプルプログラムの都合で(1~5Hz)になっていない点はご容赦願います。
ピークを左から順に2つ取り出すには「NPeaks — ピークの最大数」オプションを2に指定します。
  1 Comment
gs
gs on 15 Dec 2022
ご回答ありがとうございます。
グラフの横軸の範囲の件、承知いたしました。
NPeaksの使い方も参考になりました。
ありがとうございました。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!