Matlab movie2avi帧大小错误和保持帧大小不变

Matlab movie2avi帧大小错误和保持帧大小不变,matlab,Matlab,我对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

我对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


如果这是一个愚蠢的问题,我也深表歉意,谢谢。

您可以添加
xlim
ylim
zlim
行,用每个行的全局最小值到最大值来固定轴。 例如,在
getframe
写入之前:

xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);

您可以添加
xlim
ylim
zlim
行,以使用每个行的全局最小值到最大值来固定轴。 例如,在
getframe
写入之前:

xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);

问题可能是轴的大小在动画过程中发生变化。您使用的
getframe()
命令相当于
getframe(gca)
,因此可以获得不同大小的帧。应该使用
getframe(gcf)
来解决此问题。有关类似问题的详细信息,请参见。

问题可能是轴的大小在动画过程中发生了变化。您使用的
getframe()
命令相当于
getframe(gca)
,因此可以获得不同大小的帧。应该使用
getframe(gcf)
来解决此问题。有关类似问题的详细信息,请参阅