1.在work文件夹下新建一个m文件,取个名字。然后打开它,将s-function内容输入。
2.在mdl仿真中拖入一个s-function模块,在模块属性里面输入其名字,点击edit看是否能直接进入你刚刚所建的m文件。如果不能,要么是因为你名字不一致,要么是因为你的工作文件夹没有选择正确。
s-function的编写:
1.首先你最好有个s-function的模板。
2.function的名字可以随便取。但是里面的变量不要改动。
3.flag是s-function的行进到什么地方的标志,其实就是利用它来依次调用相关的函数。比如:0:初始化。1:连续。2.离散。3.输出。4:步长。等等。
4.switch结束后,下面就是相关的函数了,首先是初始化,这个每个s-function都必须有。然后根据你所需的功能,添加相关的函数,最后用output函数输出。
5.函数之间的数据传递用sys变量,也就是说每个函数结束后,都会将计算结果输入给sys。
s-function使用方法略微复杂,由于时间有限,讲得很不详细。qq吧
simulink使用MATLAB function的端口多出入多输出,输入输出向量设置:1.simulink中的MATLAB function如何实现多个输入输出端口
解决方案:双击MATLAB function模块,进入其编程界面,定义函数
函数名为fcn,有几个形参,simulink中的模块就会有几个端口,输出端口同样。在我的测试过程中发现如果函数名不用fcn,则无法实现多个输入输出端口。
2. simulink中的MATLAB function中输出端口设为向量
如上图所示,同样定义输出为一个变量sys,但是在下面用sys = [00],这样sys输出端口对应的就是一个两行一列的向量。效果为:输出为向量,但是只显示一个端口。
若改为
function [sys1 sys2] = fcn(ut, t, input)
则就会显示两个端口,都是一维的。
3. simulink中的MATLAB function中输入端口设为向量(数组)
这种情况无须特殊处理,像上面一样同样定义,MATLAB没有C语言那样严格的参数类型限制,只需要在函数中使用时按照向量或数组使用就可以
input(:, n):就是表示input的第n列数据
input(m, :):就是表示input的第m行数据
input(m, n):就是表示input的第m行第n列数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)