用MATLAB制作avi视频:VideoWriter代替movie2avi

movie2avi函数不存在

一次作业要求画出电偶极子的转动时电场分布的动图,用quiver作图,用movie做动画,一切都那么美好。然而到了要将movie保存为avi格式的时候,发现movie2avi函数已经不能用了。

VideoWriter已经替代movie2avi

查找资料后发现,movie2video 函数在版本更新的时候被完全删除了,取而代之的是VideoWriter。
博主版本:R2018a

VideoWriter的使用

创建
avi1=VideoWriter('dipole3_1.avi',profile);

其中profile可以不写,其值可以为以下几项:

profile意义
‘Archival’Motion JPEG 2000 file with lossless compression
‘Motion JPEG AVI’Compressed AVI file using Motion JPEG codec. (default)
‘Motion JPEG 2000’Compressed Motion JPEG 2000 file
‘MPEG-4’Compressed MPEG-4 file with H.264 encoding (Windows 7 and Mac OS X 10.7 only)
‘Uncompressed AVI’Uncompressed AVI file with RGB24 video.
‘Indexed AVI’Uncompressed AVI file with Indexed video.
‘Grayscale AVI’Uncompressed AVI file with Grayscale video.

这个我不熟悉,不翻译。

参数更改

VideoWriter 有可变和不可变参数。
比如说帧数是不可变的,而帧速可变。
在open 之前,可以改变这些参数。如


>> avi1.FrameCount=1
您无法设置 VideoWriter 的只读属性 'FrameCount'。
>> avi1.FrameRate=5;
转为avi
open(avi1);
 writeVideo(avi1,f);
 close(avi1)

f是事先制作好的moviein。

示例

 syms x y a u v l
 l=5;
 for j=0:40
	a=j*pi/6;
 	u=(l.*cos(a)-x)./((l.*cos(a)-x).^2+(l.*sin(a)-y).^2)^(1.5)+(x+l.*cos(a))./((x+l.*cos(a)).^2+(y+l*sin(a)).^2)^(1.5);
 	v=(l.*sin(a)-y)./((l.*cos(a)-x).^2+(l.*sin(a)-y).^2)^(1.5)+(y+l.*sin(a))./((x+l.*cos(a)).^2+(y+l*sin(a)).^2)^(1.5);
 	quiver(x,y,u,v);
 	axis([-10,10,-10,10]);
 	f(:,j+1)=getframe();
 	clf
 end
 movie(f)

 avi1=VideoWriter('dipole3_1.avi');
 avi1.FrameRate=5;
 open(avi1);
 writeVideo(avi1,f);
 close(avi1)

效果图
效果图

参考文档

https://ww2.mathworks.cn/help/matlab/ref/videowriter.html?lang=en
https://ww2.mathworks.cn/help/matlab/ref/videowriter.html?searchHighlight=videowriter&s_tid=doc_srchtitle

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 好的,以下是关于如何使用MATLAB制作动画的基本步骤: 1. 创建一个空的动画:使用`VideoWriter`函数创建一个新的视频对象,并设置参数,例如视频文件名、帧速率、压缩格式等等。例如,下面的代码将创建一个名为"myanimation.avi"的视频文件,并将帧速率设置为每秒10帧: ``` myVideo = VideoWriter('myanimation.avi'); myVideo.FrameRate = 10; open(myVideo); ``` 2. 循环渲染每一帧:在一个循环中生成每一帧,并将其添加到视频中。例如,下面的代码将在一个循环中生成100个帧,每个帧都是一个正弦曲线: ``` for i = 1:100 % 生成每一帧的数据 x = linspace(0, 2*pi, 1000); y = sin(x + i/10); % 绘制这一帧的图像 plot(x, y); axis([0 2*pi -1 1]); % 设置坐标轴范围 frame = getframe(gcf); % 将这一帧添加到视频writeVideo(myVideo, frame); end ``` 3. 关闭视频:当循环结束后,使用`close`函数关闭视频对象。 ``` close(myVideo); ``` 这些是MATLAB制作动画的基本步骤。你可以根据自己的需要,修改每一帧的生成方式和绘制方式,以及视频的参数设置。 ### 回答2: 在MATLAB中,movie函数可以用于制作动图。movie函数可以将一系列图像组成的动画效果展示成视频。具体操作方法如下: 1.首先,要准备一系列的图像。这些图像可以是实验数据的可视化结果、模拟结果的演示、动态变化的曲线等。 2.将这些图像按照其顺序存入一个结构体数组中。比如,一个由10张图片组成的动画视频可以存成一个10×1的结构体数组。 3.使用movie函数可以将这个结构体数组转换成一个动画视频文件。movie函数必须要有一个函数句柄 f(即函数句柄应用的是figure()函数,一般图像的生成语句和应用函数句柄时的figure( )中的参数设置得一样)作为参数,它可以指定图像的显示方式、每个图像的显示时间、视频文件的帧速等参数。 4.将movie函数调用的结果保存成一个视频文件。可以使用matlab自带的视频写入函数VideoWriter。 最后,可以在matlab命令窗口中输入movie函数的名称,然后播放动画视频。 总之,MATLAB的movie函数可以非常方便的将一系列图像转化为视频,从而制作出一个完整的动画效果。这种方法不仅可以用于数据可视化,还可以用于演示模拟结果和动态变化的图形。相比其他制作动画的工具,利用MATLAB制作动画效果也具有易学易用的特点,因此成为一种非常常见的制作动画效果的方法。 ### 回答3: MATLAB是一款功能强大的数值计算和数据展示软件,它可以用于制作各种类型的图形和动画,其中包括使用movie函数制作动图。 movie函数是MATLAB中的一个内置函数,它可以将一系列的图像帧转化为一个动态的影片,以便用于演示和展示。要使用movie函数制作动图,首先需要生成一系列的图像帧,然后将这些帧逐一编入一个矩阵或结构体,最后调用movie函数,就可以生成一个动画。 下面是使用movie函数制作动图的基本步骤: 1.生成图像帧:使用MATLAB中的图形绘制函数,如plot、scatter、surf等,生成一系列的图像帧。 2.将图像帧编入矩阵或结构体:用一个矩阵或结构体将所有的图像帧保存起来,每一帧对应矩阵或结构体中的一行或一列。 3.调用movie函数:使用movie函数将图像帧转化为动画,可以指定动画的播放速度、帧率、循环次数等参数。 4.保存动画:使用movie2avi函数将动画保存为AVI文件或使用implay函数将动画以交互式的方式播放,通过这种方式将动画展示出来。 需要注意的是,在生成图像帧时,应该尽量保持帧与帧之间的连续性,避免出现突变或不连续的情况,否则会影响最终动画效果。可以通过适当的插值或平滑处理等方式来消除这些问题。 总之,使用MATLAB的movie函数制作动图可以帮助用户更好地展示和演示他们的数据和计算结果,也可以为研究和教学提供有力的工具和支持。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值