求MATLAB高手看看这个S函数错在哪里了,很急,多谢了~~

function [sys,x0,str,ts] = s(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9},
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 7;
sizes.NumInputs = 12;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [];
end
function sys=mdlOutputs(t,x,u)
%function [sys,x0,str,ts]=chaoliu(t,x,u,flag,u0,u1,p1,p2,q1,q2,r1,r2,x1,x2,b1,b2)
%function [s_2,s_1,s1,ds1,ds2,ub,uc]=mdlOutputs(u0,u1,p1,p2,q1,q2,r1,r2,x1,x2,b1,b2)
ub=u(1);uc=u(1);ua=u(2);p1=u(3);p2=u(4);q1=u(5);q2=u(6);r1=u(7);r2=(8);x1=u(9);x2=u(10);b1=u(11);b2=u(12);
for i=1:3;
dQb1=-(b1*ub^2)/2;
dQb2=-(b2*uc^2)/2;
Sb=p1+q1*1i+dQb1*1i+dQb2*1i;
Sc=p2+q2*1i+dQb2*1i;
ds2=(p2^2+q2^2)*(r2+x2*1i)/uc^2;
ds1=(p1^2+q1^2)*(r1+x1*1i)/ub^2;
s_2=Sc;
s2=s_2+ds2;
s_1=s2+Sb;
s1=s_1+ds1;
duab=(real(s1)*r1+imag(s1)*x1)/ua;
d_uab=(real(s1)*x1-imag(s1)*r1)/ua;
ub=sqrt((ua-duab)^2+d_uab^2);
dubc=(real(s2)*r2+imag(s2)*x2)/ub;
d_ubc=(real(s2)*x2-imag(s2)*r2)/ub;
uc=sqrt((ub-dubc)^2+d_ubc^2);
end
sys=[s_2,s_1,s1,ds1,ds2,ub,uc];
end

r2=(8);
for i=1:3;不要加" ; "分号
只找到这些错误。s-function格式没有问题。由于你只用了mdlOutputs函数,其实你可以试试Embedded Matlab Function,这个更简单。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-28
基本的功能至少说一下?
输入类型也给一个实例,这样也好调试。
第2个回答  2012-03-26
咋不写注释,不想看追问

这是一个简单的2段潮流计算,公式是没有问题的,只要的是格式上有些问题,能烦请帮忙看看吗~

相似回答