Matlab中的电影是裁剪的,没有';我没有显示完整的数字
我正在学习用Matlab制作电影。我从互联网上复制了这段代码来制作这部电影。我正在使用OSXMavericks和Matlab2013a。我通常把数字窗口固定住。当我运行代码时,我可以完美地看到动画。当我使用Matlab中的电影是裁剪的,没有';我没有显示完整的数字,matlab,matlab-figure,movies,Matlab,Matlab Figure,Movies,我正在学习用Matlab制作电影。我从互联网上复制了这段代码来制作这部电影。我正在使用OSXMavericks和Matlab2013a。我通常把数字窗口固定住。当我运行代码时,我可以完美地看到动画。当我使用movie2avi或VideoWriter命令保存电影时。它并没有用完整的图形框架来记录电影,相反,我看到了一点图形窗口和我的Matlab桌面视图。有人能帮我吗 clear; close all; % Creates a 2D Mesh to plot surface x=linspac
movie2avi
或VideoWriter
命令保存电影时。它并没有用完整的图形框架来记录电影,相反,我看到了一点图形窗口和我的Matlab桌面视图。有人能帮我吗
clear;
close all;
% Creates a 2D Mesh to plot surface
x=linspace(0,1,100);
[X,Y] = meshgrid(x,x);
N=100; % Number of frames
for i = 1:N
% Example of plot
Z = sin(2*pi*(X-i/N)).*sin(2*pi*(Y-i/N));
surf(X,Y,Z)
% Store the frame
M(i)=getframe(gca); % leaving gcf out crops the frame in the movie.
end
% myVideo = VideoWriter('wavemotion.avi');
% open(myVideo);
% writeVideo(myVideo,M)
% close(myVideo)
% Output the movie as an avi file
%movie2avi(M,'WaveMovie.avi');
根据
VideoWriter
和movie2avi
的文档,您需要在代码中添加更多说明
首先,需要设置渲染器以获得良好的显示效果,并设置轴,以便下一次打印将仅重置子轴而不是整个轴:
set(gca,'nextplot','replacechildren');
set(gcf,'Renderer','zbuffer');
还有一个建议是预先分配帧缓冲区:
M(N) = struct('cdata',[],'colormap',[]);
最后,您只需要调用getframe
,而不使用任何参数,因为gca
是默认参数
在我的计算机上(使用Matlab2013b),经过这些修改并使用
VideoWriter
,它工作得很好。对于movie2avi
,它不能正常工作;我想我需要指定一个压缩编解码器来解决这个问题。我已经复制粘贴了您的解决方案,但结果仍然是一样的。你在OSX上也使用Matlab吗?不,在Windows上,对不起。也许你需要选择一个正确的压缩编解码器?我已经读到,这是相当不同的操作系统…任何地方,我可以得到一些信息?看看这个,可能有一个有用的技巧。否则,我发现轴紧
可能工作错误;尝试手动调整轴的限制。谢谢!我会看看这篇文章。我也有同样的问题。你可以在这里找到解决办法