count433 发表于 2009-11-1 21:42

求助 simulink中如何能实现一个频率随时变化的正弦波?

我做的一个仿真需要用到一个需要根据反馈调节频率的正弦波。请问如何能实现?

我用s函数做了一个,令输入等于频率,输出为正弦函数,例如输出令sys=sin(2*pi*u(1)*t)。但这个频率稍微高点输出就完全变形了。是否是里面的时间需要另设?还是思路有问题?

如果是思路问题的话有其他途径可以实现吗?请懂得的高手帮帮忙

babbytang 发表于 2009-11-2 11:24

回复:

频率高的话时间也要跟着变的,要不你每个周期采样点数很少,自然不能形成正弦波

count433 发表于 2009-11-2 19:42

回复 沙发 babbytang 的帖子

那如何调整下才能达到正弦呢?我需要达到50hz以上。

ChaChing 发表于 2009-11-2 21:06

找找有无sample rate的设定! 将其设大些

count433 发表于 2009-11-2 22:20

回复 地板 ChaChing 的帖子

function = sfuntmpl(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= 0;
sizes.NumOutputs   = 1;
sizes.NumInputs      = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0= [];
str = [];
ts= ;
function sys=mdlDerivatives(t,x,u)
sys = [];
function sys=mdlUpdate(t,x,u)
sys = [];
function sys=mdlOutputs(t,x,u)
sys=sin(2*pi*u(1)*t)
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;   
sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];
这是我用的s函数,需要改哪个部分?例如达到频率100以上
页: [1]
查看完整版本: 求助 simulink中如何能实现一个频率随时变化的正弦波?