YouTube動画
基本的には同じ内容ですが、データの作り方など、少し細かく紹介しています。
こちらも是非チェックしてみてください!
相変わらずMATLABのマニュアルが分かりづらいのでまとめておきます。コードはまとめてコマンドウィンドウに貼り付けてOK。
想定読者
Excelでデータの用意
ここでは例として、Excelでそれぞれ周波数の異なるsinカーブを3つ用意。
今回は1Hz, 3Hz, 10Hzとした。
それを足し合わせたE列の信号(黄色)を解析対象とする。
A列とE列だけ残し、CSVファイルとして保存する。
なお、それぞれの列の計算式は下記の通りです。
- B列 "=SIN(2*PI()*A2)"
- C列 "=SIN(2*PI()*3*A2)"
- D列 "=SIN(2*PI()*10*A2)"
- E列 "=SUM(B2:D2)"
コピペすればExcelにそのまま貼り付けられるようになっています。また、私のGithubにもExcelファイルをアップしておくのでそちらもご利用下さい。https://github.com/buono/MATLAB_FFT
MATLABでデータインポート
MATLABで下記の通り、tとsumをそれぞれ配列としてインポート。
信号を設定し、プロット
今回は下記コードで0.002秒間隔で4秒までの信号を作った。
1 2 3 4 5 6 7 8 9 10 11 12 | T = 0.002; % サンプル周期 L = 1001; % 信号のポイント数(時間じゃないので注意!) t = (0:L-1)*T; % 時間ベクトル Y = fft(sum); P2 = abs(Y/L); P1 = P2(1:L/2+1); P1(2:end-1) = 2*P1(2:end-1); Fs = 1/T; F = Fs*(0:(L/2))/L; plot(F,P1); |
下記の通り、1Hz, 3Hz, 10Hzにピークがあるのが分かる。