Сделать фильм в MatLab


Я пытаюсь создать короткую анимацию в MatLab с помощью команды movie. Предполагается, что анимация рисует круг. Однако, когда я запускаю следующий сценарий, знак "о"просто скачет случайным образом вокруг окна рисунка, не оставляя следа.

z = linspace(0,2*pi,100);
nframes = length(z);
Frames = moviein(nframes);
for i = 1:nframes
    x = cos(i);
    y = sin(i);
    plot(x,y,'o','erase','none');
    Frames(:,i) = getframe;
    pause(0.25);
end
movie(Frames,1)

Если кто-нибудь может объяснить мне, почему сценарий не работает правильно, я буду очень признателен!

3 2

3 ответа:

Это рисует круг. Надеюсь, это поможет.

z = linspace(0,2*pi,100);
nframes = length(z);
Frames = moviein(nframes);
for i = 1:nframes
    x = cos(2*pi*i/nframes);
    y = sin(2*pi*i/nframes);
    plot(x,y,'o');
    hold on
    Frames(:,i) = getframe;
    pause(0.01);
end
movie(Frames,1)

Вы, вероятно, хотите сделать цикл через вектор z. Попробуйте изменить x = cos(i) на x = cos(z(i)) и то же самое с y = sin(i).

Довольно поздно с этим, но я надеюсь, что это может быть полезно для кого-то там... Я ищу способы анимировать точки На круге, и, хотя я еще не понял этого, я заметил кое-что в предложенном выше коде, что может сделать ваш круг более "круглым". после того, как вы установите

hold on

Если вы добавите еще одну строку, чтобы просто сказать

axis('equal'); 

Вы получите ось, масштаб которой соответствует графику, и поэтому ваш круг не поврежден в зависимости от окна рисунка размеры.