1

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をプロットするコードの終わりです。

また、これがばかげた質問である場合はお詫び申し上げます。ありがとうございます。

4

2 に答える 2

1

線を追加xlim ylim zlimして、それぞれのグローバルな最小値から最大値で軸を修正できます。たとえば、次のようにgetframe記述します。

xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);
于 2013-02-14T22:21:58.887 に答える
0

問題はおそらく、アニメーション中に軸のサイズが変化することです。使用getframe()するコマンドは と同等getframe(gca)であるため、異なるサイズのフレームが得られます。getframe(gcf)代わりに使用することで問題を解決する必要があります。同様の問題の詳細については、movie2avi - フレーム サイズを修正する方法を参照してください。.

于 2013-09-28T15:00:41.100 に答える