我已经获得了系统的波特图。该系统似乎具有非常复杂的幅度和相位图。手动找不到传递函数是不可能的。有没有办法从幅度和相位数据中找到传递函数,在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);
答案 0 :(得分:0)
我不相信,而且这不是Matlab的错。这个问题在数学上是不平凡的,因为传递函数的极点和零点可能处于大的虚频率。这些可能不会显着影响波德情节,但你会如何排除它们的存在呢?
我认为你最好的选择是将波德图调整到合理的传递函数,并且只是继续增加传递函数中的极点和零点数,直到你得到可接受的协议。