![]() |
[求助]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 |
回复: [求助]s函数的输出问题
首先:
sizes.NumContStates = 0; 如果连续状态的要改为2 其次 sizes.DirFeedthrough = 1要改为0 因为你的输出没有直馈 再次 x0 = [];是不是要改为[0,0] 最后 检查输入是不是四个,输出是不是两个 |
回复: [求助]s函数的输出问题
谢谢2楼,非常感谢
|
所有时间均为北京时间。现在的时间是 13:45。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.