4

我已经获得了系统的波特图。该系统似乎有一个非常复杂的幅度和相位图。手动查找传递函数是不可能的。有没有办法在 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); 

这是我的数据。

4

1 回答 1

0

我不相信,这不是 Matlab 的错。这个问题在数学上是不平凡的,因为传递函数的极点和零点可能位于较大的虚频率处。这些可能不会显着影响波特图,但你会如何排除它们的存在呢?

我认为你最好的选择是将波特图拟合到一个有理传递函数,并不断增加传递函数中极点和零点的数量,直到你得到可接受的协议。

于 2015-01-30T11:46:57.523 回答