【问题标题】:Find transfer function from bode plot in matlab在matlab中从波特图中找到传递函数
【发布时间】:2015-01-30 19:46:57
【问题描述】:

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

【问题讨论】:

  • 在没有传递函数的情况下如何获得波特图?你能添加一些示例代码吗?
  • 波特图只不过是频率上的幅度。因此您可以使用tfestfrequency response object - 如果您仍然有问题,您需要提供您的数据。
  • 这是我的代码:%%FFT 方法用于查找传递函数负载 testdata2.mat;输入 = fft(信号(:,1));输入数据输出的% FFT = fft(signal(:,2));输出数据的% FFT fft_ratio = output ./ input; subplot(2,1,1) %幅度图 semilogx(20*log10(abs(fft_ratio))) subplot(2,1,2) %相位图 semilogx((180/pi)*angle(fft_ratio)) mag = 20 *log10(abs(fft_ratio));相位 = (180/pi)*angle(fft_ratio) 这是我的数据:(fileconvoy.com/…)

标签: matlab


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多