FFT 法を使用して一連の入出力データのシステム伝達関数を見つけようとしています。私がフォローしているアルゴリズムは次のとおりです。
- 入力データと出力データを matlab に読み込みます。
- 入力データと出力データを FFT します。
- 出力 FFT を入力 FFT で除算し、振幅を取得します。この例の入力は単位インパルスであるため、入力 FFT は 1.0 です。
- 結果をボード線図としてプロットします。
- 結果のボード線図を周波数応答として扱い (実際にはそうです)、周波数応答法を使用して伝達関数を計算されたボード線図に当てはめます。
私のコードは次のとおりです。
load testdata.mat; // testdata is a 2 column matrix (1001x2 matrix)
input = fft(signal(:,1)); // FFT of input data (1001x1 complex matrix)
output = fft(signal(:,2)); // FFT of output data (1001x1 complex matrix)
fft_ratio = output/input; // (1001x1001 complex matrix)
fft_ratio_mag = abs(fft_ratio); // (1001x1001 matrix) except column 1, all other columns have '0' data
bode(fft_ratio_mag(:,1))
次のエラーが表示されます。
Error using bode (line 84)
Not enough input arguments.
上記のアルゴリズムのステップ 4 と 5 の進め方を教えてください。