我已经获得了系统的波德图。该系统似乎具有非常复杂的幅度和相位图。手动查找传递函数是不可能的。有没有办法在 Matlab 中从幅度和相位数据中找到传递函数?
这是我的代码:
%%FFT method for finding Transfer Function
load testdata2.mat;
input = fft(signal(:,1));
% FFT of input data
output = fft(signal(:,2));
% FFT of output data
fft_ratio = output ./ input;
subplot(2,1,1)
%Magnitude
semilogx(20*log10(abs(fft_ratio)))
subplot(2,1,2)
%Phase
semilogx((180/pi)*angle(fft_ratio))
mag = 20*log10(abs(fft_ratio));
phase = (180/pi)*angle(fft_ratio);
最佳答案
我不这么认为,这不是 Matlab 的错。这个问题在数学上很重要,因为传递函数的极点和零点可能位于较大的虚频处。这些可能不会显着影响波德图,但您如何排除它们的存在?
我认为最好的办法是将波德图拟合为有理传递函数,并不断增加传递函数中极点和零点的数量,直到获得可接受的一致性。
关于matlab - 在matlab中从波德图查找传递函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19468442/