我对Matlab的movie2avi函数有问题;它一直给出错误:
Error using avifile/addframe>ValidateFrame (line 288)
Frame must be 266 by 343.
Error in avifile/addframe (line 158)
ValidateFrame(aviobj,width, height,dims);
Error in movie2avi (line 64)
avimov = addframe(avimov,mov);据我所知,这是由于框架的大小不一致造成的,所以我想我的问题是,我应该如何定义框架的大小,同时保持轴相等?我现在的代码是:
for i = 1:days+1
plot3(npath(i,1),npath(i,2),npath(i,3),'yellow') %sun
hold on
plot3(npath(i,4),npath(i,5),npath(i,6),'blue') %mercury
plot3(npath(i,7),npath(i,8),npath(i,9),'red') %venus
plot3(npath(i,10),npath(i,11),npath(i,12),'blue') %earth
plot3(npath(i,13),npath(i,14),npath(i,15),'red') %mars
plot3(npath(i,16),npath(i,17),npath(i,18),'blue') %jupiter
plot3(npath(i,19),npath(i,20),npath(i,21),'red') %saturn
plot3(npath(i,22),npath(i,23),npath(i,24),'blue') %uranus
plot3(npath(i,25),npath(i,26),npath(i,27),'red') %neptune
plot3(npath(i,28),npath(i,29),npath(i,30),'blue') %pluto
set(gca,'color','black')
axis('equal')
view(2)
mov(i) = getframe();
end
hold off
movie2avi(mov,'movie.avi')这是我的代码的末尾,绘制了在可变日期范围内的每一天的太阳、行星和冥王星的(x,y,z)位置npath。
如果这是一个愚蠢的问题,我也很抱歉,谢谢。
发布于 2013-02-15 06:21:59
您可以添加xlim ylim zlim线,以使用每条线的全局最小值到最大值来固定您的轴。例如,在你使用getframe之前,写下:
xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);发布于 2013-09-28 23:00:41
问题可能是轴的大小在动画过程中发生更改。您使用的getframe()命令等同于getframe(gca),因此您会得到不同大小的帧。这个问题应该通过使用getframe(gcf)来解决。有关类似问题的详细信息,请参阅movie2avi - how to fix the frame size?。
https://stackoverflow.com/questions/14882344
复制相似问题