求助:将s-function名称导入模块是出错
我自己写了个最小二乘法辨识电机参数的程序,将s-function名称导入模块是出错,one or more output arguments not assigned,是真么原因,另外s-function中可以声明全局变量吗?下面是程序:function = dsfunc(t,x,u,flag)
% An example M-file S-function for defining a discrete system.
% This S-function implements discrete equations in this form:
% x(n+1) = Ax(n) + Bu(n)
% y(n) = Cx(n) + Du(n)
%
% Generate a discrete linear system:
global y1;
global out Qn Pn Kn Q1;
out=;
Qn=;
Pn=10^5*eye(5);
switch flag,
case 0
sys = mdlInitializeSizes(); % Initialization
case 2
sys = mdlUpdate(t,x,u); % Update discrete states
case 3
sys = mdlOutputs(t,x,u); % Calculate outputs
case {1, 4, 9} % Unused flags
sys = [];
otherwise
error(['unhandled flag = ',num2str(flag)]); % Error handling
end
% End of dsfunc.
%==============================================================
% Initialization
%==============================================================
function = mdlInitializeSizes()
% Call simsizes for a sizes structure, fill it in, and convert it
% to a sizes array.
sizes = simsizes;
sizes.NumContStates= 0;
sizes.NumDiscStates= 9;
sizes.NumOutputs = 5;
sizes.NumInputs = 9;
sizes.DirFeedthrough = 1; % Matrix D is nonempty.
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0= ones(9,1); % Initialize the discrete states.
str = []; % Set str to an empty matrix.
ts= ; % sample time:
% End of mdlInitializeSizes.
%==============================================================
% Update the discrete states
%==============================================================
function sys = mdlUpdates(t,x,u)
y1=u(5)-u(3)*u(9);
Kn=Pn*Qn/(1+Qn'*Pn*Qn);
% End of mdlUpdate.
%==============================================================
% Calculate outputs
%==============================================================
function sys = mdlOutputs(t,x,u)
Q1=;
out=out+Kn(y1-Qn'*out);
Pn=Pn-(Pn*Qn*Qn'*Pn)/(1+Qn'*Pn*Qn);
Qn=';
sys=out;
% End of mdlOutputs.
页:
[1]