matlab - 在matlab中从波德图查找传递函数

标签 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.

最佳答案

我不这么认为,这不是 Matlab 的错。这个问题在数学上很重要,因为传递函数的极点和零点可能位于较大的虚频处。这些可能不会显着影响波德图,但您如何排除它们的存在?

我认为最好的办法是将波德图拟合为有理传递函数,并不断增加传递函数中极点和零点的数量,直到获得可接受的一致性。

关于matlab - 在matlab中从波德图查找传递函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19468442/

相关文章:

java - Matlab中多行注释的正则表达式

matlab - 如何获取MATLAB类中的静态成员变量?

image - 在Matlab中应用变换后如何保持初始图像大小?

matlab - 如何跟踪函数 collat​​z 上的递归调用?

c++ - Opencv 平均滤波器给出与 Matlab 平均滤波器不同的输出

c++ - 这是在 MATLAB 中使用并行池的真正方法吗?

Matlab:Moore-Penrose伪逆算法实现

matlab - 使用算法的 Matlab 实现进行时间比较是否有问题?

matlab - MATLAB MEX 文件的大小限制

matlab - 在不使用 MATLAB 中的 for 循环的情况下计算列中某些行(基于 uniqId)的总和