logo资料库

Matlab的M函数引用到Simulink中.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
将 Matlab 的 M 函数引用到 Simulink 中 作者:彭天 邮件:hellotim@foxmail.com 博客:http://hi.baidu.com/pengjun 一、简单的例子 假设我有如下的一个简单的 M 函数: function y=peng(x,t) tt=0:0.1:2*t; y=sum(tt)*x; 如果我需要在 Simulink 中用到这个 peng 函数,那么可以用下面的 Simulink 模型: MATLAB Function MATLAB Fcn 4020 Display 1 2 Constant Clock 10 Display 其中MATLABFcn 模块的设置如下:
也就是说x等于第一个输入,t为第二个输入。而在我的Simulink模型中第一个输入是一个常 量模块,一直为2,也就是x=2;第二个是随时间改变的量,也就是t每次仿真都等于当前的 仿真时间,所以最后就是t=2;因此用peng函数计算出来的结果是4020,证明是正确的。 二、使用subsystem模块 可以建立如下的模型图: 1 Constant peng Function created by PenG Subsystem 1 Display 1 将上图保存为timpeng.mdl,并存放在当前目录中。 其中Subsystem的封装如下: 4020 Display
而Subsystem内部的模型如下: 1 In 1 y Gain 1 Out 1 当双击Subsystem模块时,设置如下: 也就是说相当于输出peng(2,10)的值,结果自然是4020了。如果你要循环的改变t的值,可以 用如下的命令。 当然需要给timpeng.mdl增加一个输出模块,如下: 1 Constant peng Function created by PenG Subsystem 1 Display 1 4020 Display 1 Out 1 然后,保存。 运行下面的程序: 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模型。
分享到:
收藏