Pertanyaan Hentikan Matlab dari mengubah ukuran permukaan saat membuat gif animasi



Saya ingin membuat plot permukaan berputar 360 derajat menggunakan Matlab2013 (Linux 64bit). Saya dapat membuat gif animasi menggunakan potongan kode di bawahnya tetapi Matlab terus mengubah ukuran permukaan pada beberapa bingkai di seluruh animasi (misalnya lihat [1], bingkai 56-59). Tahu bagaimana saya dapat mencegah Matlab mengubah ukuran permukaan petak?
Terima kasih sebelumnya atas saran Anda.

function createVideo( FigureHandler, filename )
grid on
set(gca,'ZTickLabel',[]);
set(gca,'YTickLabel',[]);
set(gca,'XTickLabel',[]);
for n = 1:360
    view(n,66)
    zoom off
    drawnow
    frame = getframe(FigureHandler);
    im = frame2im(frame);
    [imind,cm] = rgb2ind(im,256);
    if n == 1;
        imwrite(imind,cm,filename,'gif', 'Loopcount',inf);
    else
        imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0);
    end
end
end

[1] http://postimg.org/image/prib1psq5/


4
2018-06-13 10:07


asal


Jawaban:


Masalahnya disebabkan oleh batas sumbu yang berubah dengan tampilan, ini bisa dicegah dengan pengaturan batas sumbu secara manual atau dengan menyetel properti sumbu 'XLimMode','YLimMode' dan 'ZLimMode', untuk 'manual'.

Namun properti lain (misalnya DataAspectRatio, PlotBoxAspectRatio, dll ...) akan menyebabkan figur untuk memperbesar dan memperkecil saat memutar

Namun Matlab menyediakan vis3d mode sumbu untuk mengatur semua ini untuk Anda!
Yang perlu Anda tambahkan adalah:

axis('vis3d')

yang harus ditempatkan setelah pengaturan kutu dll ... tetapi di luar untuk loop


3
2018-06-13 10:59