在matlab中,simulink里的s-function,我添加到仿真中,在网上找了一段相当于放大器的代码,如下

function [sys,x0,str,ts] = sfungain(t,x,u,flag,gain)
switch flag,
case 0,
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0=[];
str=[];
ts=[0,0];
case 3,
sys=gain*u;
case {1,2,4,9},
sys = [];
end

双击sfunction更模块后,点击edit,然后把这段代码放进去,并另存为gain1之后,我将上s-function name写为 gain1,然后参数为gain,然后我加了一个输入常数,想用示波器观察,但是运行时总是出错,说gain1这个sfunction找不到,第一次研究sfunctiong ,不知道怎样才能正确运行,求指导,谢谢啊。

还有如果我要设置参数gain是不是直接在matlab里的command window那边写入gain=1,这样的就行了?(即参数怎么设置。。。

关于s-function的调用,个人建议在matlab的work文件夹下新建一个m文件,修改好名字,比如test.m,将上述代码粘贴入test.m里面,然后在s-function模块的Parameters对话框内填入所需调用的名字:test,点击edit测试一下,如果能打开test.m,表明连接成功了。如果有参数传递的,可以在对话框里面填入参数名称,中间用英文逗号“,”隔开。如果感觉不方便放入work文件夹里面,可以放在仿真程序mdl同一个文件夹下,注意在matlab主界面里面,要将Current Directory调整到这个文件夹,否则会出现找不到s-function文件的提示。
设置参数gain:从上述程序看出,参数gain是从外界传递进入s-function的,所以在s-function模块对话框内下面那个填入:gain,然后点击ok。在s-function模块上面点击右键,选择edit Mask ,打开封装对话框,选择Parameters,添加一行,设置好名称和变量名:gain,最后点击ok。然后双击s-function模块,会弹出参数输入对话框,在这里输入gain的值即可,就如同普通的simulink模块一样的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-22
你好:
你这个问题解决了吗?我现在也是刚学这个,现在仿真不出来,遇到的问题和你的一样。
你是怎么解决的?
相似回答