- 积分
- 0
- 注册时间
- 2010-11-8
- 仿真币
-
- 最后登录
- 1970-1-1
|
s-function的文件如下:
function [sys,x0,str,ts] = xsd(t,x,u,flag,G)
a=[1;2;3;4;5];
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes(G);
case 3
sys=mdlOutputs(t,x,u,a,G);
case {1,2,4,9}
sys=[];
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end
function [sys,x0,str,ts]=mdlInitializeSizes(G)
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = -1;
sizes.NumInputs = -1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0 0];
function sys=mdlOutputs(t,x,u,a,G)
% 此处填写计算模块输出向量的指令
% []是模块的默认值
% 用户必须把算得的模块输出向量赋给sys
switch (floor(t/0.2)-9)
case 1
if abs(t-floor((t)/0.2)*0.2)<=G
a(1)=u;
sys=a(1);
else
sys=a(1);
end
case 2
if abs(t-floor((t)/0.2)*0.2)<=G
a(2)=u;
sys=a(2);
else
sys=a(2);
end
case 3
if abs(t-floor((t)/0.2)*0.2)<=G
a(3)=u;
sys=a(3);
else
sys=a(3);
end
case 4
if abs(t-floor((t)/0.2)*0.2)<=G
a(4)=u;
sys=a(4);
else
sys=a(4);
end
case 5
if abs(t-floor((t)/0.2)*0.2)<=G
a(5)=u;
sys=a(5);
else
sys=a(5);
end
otherwise
sys=0;
end
在这一步
case 1
if abs(t-floor((t)/0.2)*0.2)<=G
a(1)=u;
sys=a(1);
我想保留a(1)的值,但是每个仿真周期数组a都会被初始化,请问有没有什么办法能记录a的值啊? |
|