求助 simulink中如何能实现一个频率随时变化的正弦波?
我做的一个仿真需要用到一个需要根据反馈调节频率的正弦波。请问如何能实现?我用s函数做了一个,令输入等于频率,输出为正弦函数,例如输出令sys=sin(2*pi*u(1)*t)。但这个频率稍微高点输出就完全变形了。是否是里面的时间需要另设?还是思路有问题?
如果是思路问题的话有其他途径可以实现吗?请懂得的高手帮帮忙
回复:
频率高的话时间也要跟着变的,要不你每个周期采样点数很少,自然不能形成正弦波回复 沙发 babbytang 的帖子
那如何调整下才能达到正弦呢?我需要达到50hz以上。 找找有无sample rate的设定! 将其设大些回复 地板 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]