如何用matlab画动态正弦波?

YGboom 生活常识评论443字数 651阅读模式

回答这个问题前,先贴出matlab画的一个动态正弦波。

图片信息:文章源自玩技e族-https://www.playezu.com/124685.html

每秒2帧;GIF格式;sine波形,初始相位为0,相位变化范围为0:2π,步长为π/10正弦波频率1Hz要想让正弦波动起来,当然就像放电影一样,我先保存每一帧,然后顺序播放。文章源自玩技e族-https://www.playezu.com/124685.html

matlab提供了放电影的函数:文章源自玩技e族-https://www.playezu.com/124685.html

movie(M,n,fps) 以每秒 fps 帧的速度播放影片。默认值是每秒 12 帧。达不到指定速度的计算机会尽可能快地播放。文章源自玩技e族-https://www.playezu.com/124685.html

下面,我们仅仅需要创建一个相位不断变化的sin函数即可文章源自玩技e族-https://www.playezu.com/124685.html

fai=0:pi/10:10*pi;文章源自玩技e族-https://www.playezu.com/124685.html

x=sin(2*pi*f0*t+fai(j));文章源自玩技e族-https://www.playezu.com/124685.html

然后最后在构建一个循环,大功告成!文章源自玩技e族-https://www.playezu.com/124685.html

for j=1:loops文章源自玩技e族-https://www.playezu.com/124685.html

x=sin(2*pi*f0*t+fai(j));文章源自玩技e族-https://www.playezu.com/124685.html

plot(t,x,'-ro','LineWidth', 1);

legend(['信号sin(2pit+',num2str(fai(j)),')']);

xlabel('时间t');

grid on;

F(j) = getframe;

im=frame2im(F(j));

[imind,cm]=rgb2ind(im,256);

if j == 1

imwrite(imind,cm,'SineGIf.gif','gif', 'Loopcount',inf,'DelayTime',0.5);

else

imwrite(imind,cm,'SineGIf.gif','gif','WriteMode','append','DelayTime',0.5);

end

end

更多通信|MATLAB知识,欢迎关注我!

玩技站长微信
添加好友自动发送入群邀请
weinxin
rainbow-shownow
玩技官方公众号
官方微信公众号
weinxin
PLAYEZU
 
匿名

发表评论

匿名网友
确定