声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2150|回复: 4

[综合讨论] 求助 simulink中如何能实现一个频率随时变化的正弦波?

[复制链接]
发表于 2009-11-1 21:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

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

使用道具 举报

发表于 2009-11-2 11:24 | 显示全部楼层

回复:

频率高的话时间也要跟着变的,要不你每个周期采样点数很少,自然不能形成正弦波
 楼主| 发表于 2009-11-2 19:42 | 显示全部楼层

回复 沙发 babbytang 的帖子

那如何调整下才能达到正弦呢?我需要达到50hz以上。
发表于 2009-11-2 21:06 | 显示全部楼层
找找有无sample rate的设定! 将其设大些
 楼主| 发表于 2009-11-2 22:20 | 显示全部楼层

回复 地板 ChaChing 的帖子

function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag)
switch flag,
  case 0,
    [sys,x0,str,ts]=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 [sys,x0,str,ts]=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  = [0 0];
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以上
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-14 13:26 , Processed in 0.092366 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表