MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]s函数的输出问题 (https://www.labfans.com/bbs/showthread.php?t=5749)

shevchen7 2008-12-10 20:12

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

function [sys,x0,str,ts] = sflux(t,x,u,flag)

switch flag,
case 0,
[sys,x0,str,ts]=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 [sys,x0,str,ts]=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 = [0 0];
% 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

rongxianliang 2008-12-12 11:34

回复: [求助]s函数的输出问题
 
首先:
sizes.NumContStates = 0;
如果连续状态的要改为2
其次
sizes.DirFeedthrough = 1要改为0
因为你的输出没有直馈
再次
x0 = [];是不是要改为[0,0]
最后
检查输入是不是四个,输出是不是两个

shevchen7 2008-12-13 18:54

回复: [求助]s函数的输出问题
 
谢谢2楼,非常感谢


所有时间均为北京时间。现在的时间是 13:45

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.