wyy20071127 发表于 2012-6-13 09:46:07

请问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的值啊?

kokyo52 发表于 2012-6-13 18:58:41

lz想怎么保留a(1)的值,保持不变还是存到文件里还是神马?

wyy20071127 发表于 2012-6-13 19:27:18

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:35

求大侠知道啊!!!!!

kokyo52 发表于 2012-7-9 20:49:44

wyy20071127 发表于 2012-6-13 21:24 static/image/common/back.gif
求大侠知道啊!!!!!

这里的a(1)得是global型才能达到你的目的啊,否则我看你的时间条件,很可能a(1)是没有被赋值的
页: [1]
查看完整版本: 请问s-function中如何保存数组的值而不会被初始化