Matlab中的电影是裁剪的,没有';我没有显示完整的数字

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

我正在学习用Matlab制作电影。我从互联网上复制了这段代码来制作这部电影。我正在使用OSXMavericks和Matlab2013a。我通常把数字窗口固定住。当我运行代码时,我可以完美地看到动画。当我使用
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上,对不起。也许你需要选择一个正确的压缩编解码器?我已经读到,这是相当不同的操作系统…任何地方,我可以得到一些信息?看看这个,可能有一个有用的技巧。否则,我发现
轴紧
可能工作错误;尝试手动调整轴的限制。谢谢!我会看看这篇文章。我也有同样的问题。你可以在这里找到解决办法