近日学习matlab建模方面的东西,mark一个网站:http://wtclab.net/txfz/jkmulu.html,邵玉斌老师的教案。
本篇记录一个包含S函数的子系统的建立和封装,用S函数产生任意正弦波。
matlab版本:R2017b
步骤如下:
①首先建立主系统模型。在命令行窗口输入simulink,在弹出的窗口中新建Blank Model,接着点击simulink工具栏的Library Browser,从中选取模块搭建主系统模型,如下图。
接着,双击Subsystem搭建子系统内部模型,如下图。
②系统模型搭建好之后,新建M文件编写S函数,示例代码如下。(注意:函数名需与M文件名一致。)
function [sys,x0,str,ts] =example1Sfun(t,x,u,flag,Amp,Freq,Phase)%正弦波信号源switchflagcase 0 % flag=0初始化
[sys,x0,str,ts]=mdlInitializeSizes;case 3 % flag=3计算输出
sys=mdlOutputs(t,Amp,Freq,Phase);case {1, 2, 4, 9 } %其他作不处理的flag
sys=[]; %无用的flag时返回sys为空矩阵