请教几个关于S-FUNCTION的问题
1.编写S函数,M语言还是C语言更方便一些?2.编写这些函数必须用自带的模板码?
3.C函数转化成M函数,指令是否是“MEX”,但是我用了这个指令,生成文件为什么是*.DLL文件? 1:M语言和C语言哪个方便这个问题,当然M文件方便些,不用转化,当然你想用什么语言写都行,看你哪个方面强些:)总之,条条大路通罗马.
2:一般情况下都用自带的模板,因为S函数有它特定的形式但也可以写成下面的样子
function =bbmodel(t,x,u,flag)
if abs(flag) == 1
sys(1)=x(2);
sys(2)=0.7143*(x(1)*x(2)^2-9.81*sin(x(3)));
sys(3)=x(4);
sys(4)=u;
%with disturbence
% sys(4)=u+sin(20*t);
elseif flag == 3
sys=x;
elseif flag == 0
x0=;
%x0=;
%x0=[-1.6;-0.05;0.6;0.05];
%x0=[-2.4;0.1;-0.6;-0.1];
%x0=;
sizes(1)=4; %number of continuous states
sizes(2)=0; %number of discrete states
sizes(3)=4; %number of outputs
sizes(4)=1; %number of inputs
sizes(5)=0; %number of discontinuous roots
sizes(6)=0; %flag of direct feedthough...
%(used for finding algebraic loops)
sys=sizes;
else
sys = [ ];
end
也就是说function =bbmodel(t,x,u,flag)必须要有,然后根据FLAG来写。
如果你是纯的M文件,那么可以采用MATLAB FCN
3:看下http://forum.vibunion.com/forum/viewthread.php?tid=30206&highlight=mex%CE%C4%BC%FE
你看下simulink的help里面的S函数的介绍,里面有如何用C来写S函数等等你所问的问题。 :handshake 谢谢你的解答。
页:
[1]