在matlab中找到波特图中的传递函数

时间:2013-10-19 16:42:50

标签: matlab

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

Here's my data.

1 个答案:

答案 0 :(得分:0)

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

我认为你最好的选择是将波德图调整到合理的传递函数,并且只是继续增加传递函数中的极点和零点数,直到你得到可接受的协议。