我是靠谱客的博主 雪白水蜜桃,最近开发中收集的这篇文章主要介绍matlab simulink 传递函数,如何从Simulink模型获取传递函数到Matlab,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

你真的知道传递函数吗?在Simulink中正确实现?然后错误表明您没有为您的工作区块分配正确的变量名称,您只保留了默认的 VariableName . 对于频率响应,您需要使用 tf 在Simulink外部定义传递函数,然后使用 bodeplot 绘制它 . (看看这些答案的结尾)

但在我看来,你有一些 inputdata 和一些 outputdata 并且你想 estimate the transfer function 并最终获得该传递函数的频率响应 . Simulink没有必要这样做 . 找到传递函数后,可以使用 Transfer function 块将其实现到Simulink中,使用 From Workspace 块提供模拟,并使用 Scope 显示结果 . 但首先你需要转移功能 .

假设您有变量 inputdata 和 outputdata ,首先需要创建传递函数数据集:

% prepare data for tftest, 100 is a random chosen sampling time

tfdata = iddata(data(:,1),data(:,2),100);

那么您可以使用 tfest 来估算具有选定极数的传递函数:

N = 5; % Number of poles

sys = tfest(tfdata,N);

您获得的频率响应,例如与 bodeplot :

bodeplot(sys)

您打算使用的函数 FREQZ 仅用于数字滤波器,而不用于传递函数 .

最后,您可以使用Simulink测试您的模型:

7709ffe4a5ae91158c7015f72d251577.png

其中 Transfer Fcn 块的分子是 sys.num{1} ,分母 sys.den{1} (对于我的例子) .

如果 Scope 中显示的图表(请注意您应在范围设置中禁用"Limit Data points to last 5000")与 outputdata 类似,则估算成功 .

我为你的模型做了一个测试:(固定步长求解器,没有连续状态,0.0001步进时间) .

c101ef759a2edd007465da4f66424ef4.png

然后是以下代码:

tfdata = iddata(inputdata,outputdata,0.0001);

N = 5;

sys = tfest(tfdata,N);

bodeplot(sys)

返回:

sys =

From input "u1" to output "y1":

-2068 s^4 + 2.89e06 s^3 + 7.017e10 s^2 + 5.205e13 s - 8.931e15

-------------------------------------------------------

s^5 + 1.034e04 s^4 + 4.552e07 s^3 + 1.114e11 s^2 + 8.337e13 s + 8.931e15

和:

a67c14976c09a1c78ec4ee36cae307cc.png

或将其转换为离散的:

sysd = c2d(sys,0.0001)

sysd =

From input "u1" to output "y1":

-0.0995 z^-1 + 0.4644 z^-2 - 0.7491 z^-3 + 0.5061 z^-4 - 0.1219 z^-5

-------------------------------------------------------

1 - 4.042 z^-1 + 6.554 z^-2 - 5.332 z^-3 + 2.176 z^-4 - 0.3556 z^-5

我无法帮助你,无论如何这都是功课,对吧?所以其余的由你决定 . 老实说,手工计算吧!它会更准确!

最后

以上就是雪白水蜜桃为你收集整理的matlab simulink 传递函数,如何从Simulink模型获取传递函数到Matlab的全部内容,希望文章能够帮你解决matlab simulink 传递函数,如何从Simulink模型获取传递函数到Matlab所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部