我正在尝试使用 FFT 方法找到一组输入输出数据的系统传递函数。我遵循的算法如下:
- 将输入数据和输出数据加载到matlab中。
- FFT 输入数据和输出数据。
- 将输出 FFT 除以输入 FFT 并取幅值。由于我们示例的输入是单位脉冲,因此输入 FFT 为 1.0。
- 将结果绘制为波特图。
- 将得到的 Bode' 图视为频率响应 - 它确实是 - 并使用频率响应方法将传递函数拟合到计算的 Bode' 图。
我的代码是:
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 步。