red_perfume 发表于 2009-12-28 22:02:37

产生固定的波形

本帖最后由 red_perfume 于 2010-1-4 21:56 编辑

各位大侠:

如何用S函数写一个简单的波形,然后在simulink中不断使能使其不断重复输出啊? 本人新手上路

谢谢各位的宝贵时间!




谢谢您的回答,我想在模型中每次trigger后产生一个周期的sin函数,一个周期保持0直到先一个trigger, 高手这个可以完成吗?

shipboard 发表于 2009-12-28 22:33:01

你是要正弦的还是方波?
方波的如下:function = GenSin(t,x,u,flag)
switch flag,
case 0,
    =mdlInitializeSizes;
case 1,
    sys=mdlDerivatives(t,x,u);
case 2,
    sys=mdlUpdate(t,x,u);
case 3,
    sys=mdlOutputs(t,x,u);
case 4,
    sys=mdlGetTimeOfNextVarHit(t,x,u);
case 9,
    sys=mdlTerminate(t,x,u);
otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end
function =mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 0;
sizes.NumDiscStates= 2;
sizes.NumOutputs   = 1;
sizes.NumInputs      = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0= ;
str = [];
ts= ;      % variable sample time
function sys=mdlDerivatives(t,x,u)
sys = [];
function sys=mdlUpdate(t,x,u)
if x(1) >= 1/u
    x(2) = 1 - x(2);
    x(1) = 0.001;
else
    x(1) = x(1) + 0.001;
end
sys = x;
function sys=mdlOutputs(t,x,u)
sys = x(2);
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 0.01;    %Example, set the next hit to be one second later.
sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];

red_perfume 发表于 2010-1-4 21:58:14

谢谢您的回答,我想在模型中每次trigger后产生一个周期的sin函数,一个周期保持0直到先一个trigger, 高手这个可以完成吗?
页: [1]
查看完整版本: 产生固定的波形