请问s-function中如何保存数组的值而不会被初始化
s-function的文件如下:function = xsd(t,x,u,flag,G)
a=;
switch flag
case 0
=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 =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= ;
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的值啊? lz想怎么保留a(1)的值,保持不变还是存到文件里还是神马? kokyo52 发表于 2012-6-13 18:58 static/image/common/back.gif
lz想怎么保留a(1)的值,保持不变还是存到文件里还是神马?
就是 在这儿
case 1
if abs(t-floor((t)/0.2)*0.2)<=G
a(1)=u;将该时刻的u值赋值给a(1)后,在以后的仿真时间保持这个值而不会被初始化
sys=a(1);
求大侠知道啊!!!!! wyy20071127 发表于 2012-6-13 21:24 static/image/common/back.gif
求大侠知道啊!!!!!
这里的a(1)得是global型才能达到你的目的啊,否则我看你的时间条件,很可能a(1)是没有被赋值的
页:
[1]