打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
教你利用5行Matlab代码创建动态视频!
userphoto

2022.08.29 湖北

关注

在某些场合下,我们可能需要展示动态图,特别是在科技论文的附录材料中比较常见。

比如对于,我们想展示不同的相位角对函数波形有何影响,那么利用动态图会看得更直观👇

sin(x+phi)波形受相位的影响动态图

下面向读者介绍如何利用matlab得到上述动态图(视频)。核心代码仅需5行!!!

(更多有趣动图可以点击往期推文:

新年祝福千篇一律?看看Matlab如何制作高级祝福文案

Matlab里面烟花表演有多炫酷?)

生成视频的基本步骤

Matlab中创建动态视频,基本思想就是要把你的图窗中的每一幅静态图都“截取”在一个视频文件里面。

  • 首先使用指令

    myVideo=VideoWriter(filename)创建新的视频文件myVideo.

    其中,filename是自己定义的视频文件名(最后你得到的视频文件即为:filename.avi的格式)

  • 紧接着按照:'打开文件👉写入视频的每一帧👉关闭文件'的顺序完成动态视频的创建.

    用到指令:

    open(myVideo) % 先要把文件open

    Fr=getframe(gcf); % 获取当前图窗的“截图”

    writeVideo(myVideo,Fr);%将获取的图窗截图write到你创建的视频文件中

    close(myVideo) % 最后把文件close.

OK!基本过程就这样。下面我们看下如何在每一次循环中抓取图窗,完成动态视频创建。

简单的案例

,我们想看下相位角范围内波形的变化情况。

首先我们需要将内的相角均匀分点(这里取100个)。然后对这每一个,我们在图窗中绘制的函数曲线。接着利用getframe(gcf)函数获取当前图像的“截图”,再将截图写入创建的视频文件即可。

利用一次for循环,详见代码:

figure % 创建图窗
myVideo=VideoWriter('VideoFile_test'); % 指定视频文件名
open(myVideo) % open开始写入

x=0:0.01:2*pi; $ 函数曲线绘图范围

for i=1:100
    plot(x,sin(x+i/100*2*pi),'LineWidth',2);
    pbaspect([1 1 1]) % 设置正方形图窗
    xlabel('x')
    ylabel('y')
    title(['\phi=',num2str(i/100),'*2\pi'])
    drawnow % 即时显示当前图窗
    Fr=getframe(gcf); % 抓取图窗
    writeVideo(myVideo,Fr); % 写入文件
end
close(myVideo) % close文件,结束

运行后可以看见matlab窗口左边“当前文件夹”下面出现刚刚得到的视频文件:

打开即可得到动态波形:

动态视频

一些设置

控制视频的长短可以通过调节“帧数”来实现,你一定知道,视频是由一帧一帧的静态图拼接而成,视频的”帧数“其实就是每秒钟显示多少张图。显然:

每秒显示一张图,视频会很长,会失去”动态“的感觉;

每秒显示一百张图,视频会很'丝滑',但视频比较短。

添加指令:

myVideo.FrameRate=num

可以指定视频帧数为num(默认为30)。总的循环数100,每秒显示num,那么显然视频长度即为 100/num 秒。

例如,我们减少帧数,设置myVideo.FrameRate=10,运行得到:

100/10=10秒

增加帧数,设置myVideo.FrameRate=50,运行得到:

100/50=2秒

总之,我们可以通过改变帧数,来使得动图比较'迟缓'或者比较'丝滑'.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何在FLASH中插入视频
你以为打了“码”,我就不认识她了?[坏笑]
《MATLAB图像处理实例详解》视频 3.5 视频文件的读写
如何用CAD创建动态块?看完视频,cad小白照样做出动态块
Matlab代码迁移至C++(上)
【MATLAB工程人员的福音】MATLAB R2015b的Coder工具使用实例(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服