主题:求助,simulink调用M文件问题?
各位大虾,小弟编写了一个M文件,将其调到simulink中进行仿真,模块是用S-Function system来搭建的,出现如下错误:
Error evaluating parameter 'A' in 'fun/S-Function': Undefined function or variable 'A'.
请大家帮忙解决,急!
M文件内容如下:
function [sys,x0,str,ts] = fun(t,x,u,flag,A,B,C,D)
A=[2.25, -5, -1.25, -0.5; 2.25, -4.25, -1.25, -0.25;
0.25, -0.5, -1.25, -1; 1.25, -1.75, -0.25, -0.75];
B=[4,6;2,4;2,2;0,2];
C=[0,0,0,1;0,2,0,2];
D=zeros(2,2);
switch flag,
case 0
[sys,x0,str,ts] =mdlInitializeSizes(A,D);
case 1
sys = mdlDerivatives(t,x,u,A,B);
case 3
sys = mdlOutputs(t,x,u,C,D);
case {2,4,9}
sys = [];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts] = mdlInitializeSizes(A,D)
sizes = simsizes;
sizes.NumContStates = size(A,1);
sizes.NumDiscStates = 0;
sizes.NumOutputs = size(A,1)+size(D,1);
sizes.NumInputs = size(D,2);
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = zeros(size(A,1),1);
str = [];
ts = [-1 0];
function sys = mdlDerivatives(t,x,u,A,B)
sys = A*x + B*u;
function sys = mdlOutputs(t,x,u,C,D)
sys = [C*x+D*u; x];
不知道错在哪里了,怎么会显示A没定义呢?
Error evaluating parameter 'A' in 'fun/S-Function': Undefined function or variable 'A'.
请大家帮忙解决,急!
M文件内容如下:
function [sys,x0,str,ts] = fun(t,x,u,flag,A,B,C,D)
A=[2.25, -5, -1.25, -0.5; 2.25, -4.25, -1.25, -0.25;
0.25, -0.5, -1.25, -1; 1.25, -1.75, -0.25, -0.75];
B=[4,6;2,4;2,2;0,2];
C=[0,0,0,1;0,2,0,2];
D=zeros(2,2);
switch flag,
case 0
[sys,x0,str,ts] =mdlInitializeSizes(A,D);
case 1
sys = mdlDerivatives(t,x,u,A,B);
case 3
sys = mdlOutputs(t,x,u,C,D);
case {2,4,9}
sys = [];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts] = mdlInitializeSizes(A,D)
sizes = simsizes;
sizes.NumContStates = size(A,1);
sizes.NumDiscStates = 0;
sizes.NumOutputs = size(A,1)+size(D,1);
sizes.NumInputs = size(D,2);
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = zeros(size(A,1),1);
str = [];
ts = [-1 0];
function sys = mdlDerivatives(t,x,u,A,B)
sys = A*x + B*u;
function sys = mdlOutputs(t,x,u,C,D)
sys = [C*x+D*u; x];
不知道错在哪里了,怎么会显示A没定义呢?