将Matlab的M函数引用到Simulink中

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

将Matlab的M函数引用到Simulink中
将Matlab的M函数引用到Simulink中
作者:彭天
邮件:********************
博客:/pengjun
一、简单的例子
假设我有如下的一个简单的M函数:
function y=peng(x,t)
tt=0:0.1:2*t;
y=sum(tt)*x;
如果我需要在Simulink中用到这个peng函数,那么可以用下面的Simulink模型:
其中MATLAB Fcn模块的设置如下:
也就是说x等于第一个输入,t为第二个输入。

而在我的Simulink 模型中第一个输入是一个常量模块,一直为2,也就是x=2;第二个是随时间改变的量,也就是t每次仿真都等于当前的仿真时间,所以最后就是t=2;因此用peng函数计算出来的结果是4020,证明是正确的。

二、使用subsystem模块
可以建立如下的模型图:
其中Subsystem的封装如下:
而Subsystem内部的模型如下:
当双击Subsystem模块时,设置如下:
也就是说相当于输出peng(2,10)的值,结果自然是4020了。

如果你要循环的改变t的值,可以用如下的命令。

当然需要给timpeng.mdl增加一个输出模块,如下:
运行下面的程序:
open_system('timpeng');
for i=1:10
set_param('timpeng/Subsystem','t',num2str(i));
save_system('timpeng');
[t_out,x_out,y_out]=sim('timpeng',[010]);
disp(y_out(end));
end
也就是用open_system来打开Simulink模型文件,用set_param来设置其中Subsystem模块的t参数的值依次为1到10,然后用save_system来保存Simulink模型文件。

之后用sim函数来运行timpeng.mdl,然后用disp函数输出最后一个输出值。

可以看到会依次的输出当t为1到10时,对应的用peng函数计算的值。

最后一个是4020,代表运行完毕,即t=10.
可以用close_system来关闭Simulink模型。

相关文档
最新文档