shevchen7 发表于 2008-12-9 20:33

s函数的输出问题

我用s函数编了个异步电机定子磁链u-I模型,出现系统错误:Index exceeds matrix dimensions.
Error in ==> d:\MATLAB6p5\work\sflux.m
On line 10==>   sys=mdlOutputs(t,x,u);
不知如何解决,希望各位帮忙,谢谢

function = sflux(t,x,u,flag)

switch flag,
case 0,
    =mdlInitializeSizes;

case 1,
    sys=mdlDerivatives(t,x,u);

case 3,
    sys=mdlOutputs(t,x,u);

case {2,4,9}
    sys=[];

otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end
% end sfuntmpl

function =mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 0;
sizes.NumDiscStates= 0;
sizes.NumOutputs   = 2;
sizes.NumInputs      = 4;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);

x0= [];

str = [];

ts= ;
% end mdlInitializeSizes


% mdlDerivatives
% Return the derivatives for the continuous states.
%=======================================
%输入:u(1)=Uαs,u(2)=Uβs,u(3)=Iαs,u(4)=Iβs
%输出:sys(1)=vαs,sys(2)ψβ
%状态变量:x(1)=ψαs,x(2)=ψβs
% 电机参数:Rs,Pn

function sys=mdlDerivatives(t,x,u)
Rs=0.1165;
sys(1)=u(1)-Rs*u(3);
sys(2)=u(2)-Rs*u(4);
% end mdlDerivatives
%=============================
% mdlOutputs
% Return the block outputs.
%=============================
function sys=mdlOutputs(t,x,u)
sys(1)=x(1);
sys(2)=x(2);
% end mdlOutputs

woodylacurs 发表于 2009-2-13 13:42

用sys=;试试

lfq19851126 发表于 2009-3-9 18:17

function sys=mdlDerivatives(t,x,u)
Rs=0.1165;
sys(1)=u(1)-Rs*u(3);
sys(2)=u(2)-Rs*u(4);

在这个函数中,因为是连续的系统,所以sys(1)=u(1)-Rs*u(3);sys(2)=u(2)-Rs*u(4);是指它们的导数的值即dx(1)/dt=u(1)-Rs*u(3);dx(2)/dt=u(2)-Rs*u(4);

你在这里没有弄明白S函数里面的东西如果你要做的东西室和时间没关系的式子即
x(1)=u(1)-Rs*u(3);x(2)=u(2)-Rs*u(4);
那么你就直接用
function sys=mdlOutputs(t,x,u)
x(1)=u(1)-Rs*u(3);x(2)=u(2)-Rs*u(4);
sys(1)=x(1);
sys(2)=x(2);
就可以了 就不用调用mdlDerivatives(t,x,u)函数了

建议你再看看关于S函数的书

感觉你还是没弄明白s函数的真谛

低调的奢华 发表于 2012-3-2 07:59

function sys=mdlDerivatives(t,x,u)
Rs=0.1165;
sys(1)=u(1)-Rs*u(3);
sys(2)=u(2)-Rs*u(4);

在这个 ...
lfq19851126 发表于 2009-3-9 18:17 http://bbs.simol.cn/images/common/back.gif
有关于PMSM DTC写的扩展卡尔曼滤波器S-function的例子么?传份给我!e-mail:394441579@qq.com
页: [1]
查看完整版本: s函数的输出问题