奇的组词
matlabsimulink传递函数,如何从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 chon sampling time
tfdata = iddata(data(:,1),data(:,2),100);
那么您可以使⽤ tfest 来估算具有选定极数的传递函数:
N = 5; % Number of poles
sys = tfest(tfdata,N);
劳动法第四十七条您获得的频率响应,例如与 bodeplot :队旗怎么画
bodeplot(sys)
您打算使⽤的函数 FREQZ 仅⽤于数字滤波器,⽽不⽤于传递函数 .
最后,您可以使⽤Simulink测试您的模型:
其中 Transfer Fcn 块的分⼦是 sys.num{1} ,分母 sys.den{1} (对于我的例⼦) .
干果有哪些如果 Scope 中显⽰的图表(请注意您应在范围设置中禁⽤"Limit Data points to last 5000")与 outputdata 类似,则估算成功 .
林俊卿
我为你的模型做了⼀个测试:(固定步长求解器,没有连续状态,0.0001步进时间) .
然后是以下代码:
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
和:
或将其转换为离散的:
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.04
2 z^-1 + 6.554 z^-2 - 5.332 z^-
3 + 2.176 z^-
狂野时速4 - 0.3556 z^-5
王维君我⽆法帮助你,⽆论如何这都是功课,对吧?所以其余的由你决定 . ⽼实说,⼿⼯计算吧!它会更准确!