wmr_boy 发表于 2007-5-21 15:44

请教几个关于S-FUNCTION的问题

1.编写S函数,M语言还是C语言更方便一些?
2.编写这些函数必须用自带的模板码?
3.C函数转化成M函数,指令是否是“MEX”,但是我用了这个指令,生成文件为什么是*.DLL文件?

cdwxg 发表于 2007-5-21 16:21

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函数等等你所问的问题。

wmr_boy 发表于 2007-5-22 12:25

:handshake 谢谢你的解答。
页: [1]
查看完整版本: 请教几个关于S-FUNCTION的问题