1:M语言和C语言哪个方便这个问题,当然M文件方便些,不用转化,当然你想用什么语言写都行,看你哪个方面强些:)总之,条条大路通罗马.
2:一般情况下都用自带的模板,因为S函数有它特定的形式但也可以写成下面的样子
function [sys,x0]=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=[2.4;-0.1;0.6;0.1];
%x0=[1.6;0.05;-0.6;-0.05];
%x0=[-1.6;-0.05;0.6;0.05];
%x0=[-2.4;0.1;-0.6;-0.1];
%x0=[0.1;0;-1.5;0];
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 [sys,x0]=bbmodel(t,x,u,flag)必须要有,然后根据FLAG来写。
如果你是纯的M文件,那么可以采用MATLAB FCN
3:看下http://forum.vibunion.com/forum/ ... ght=mex%CE%C4%BC%FE
你看下simulink的help里面的S函数的介绍,里面有如何用C来写S函数等等你所问的问题。 |