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