2013-06-13 3 views
1

Я хочу построить два одновременных графика в двух разных положениях в Matlab, анимации с петлями и обе разные анимации: одна с удержанием и другая с удержанием.двух одновременных графиков в matlab

Кроме того, один является 2D и один 3D

Я делаю что-то вроде этого:

for i=1:some_number 
    axes('position',...) 
    plot(...);hold on; 
    axes('position',...) 
    clf 
    plot3(...) (or fill3 but has to do with 3d rendering) 
    view(...) 
    set(gca, 'cameraview',...) 
    set(gca,'projection',...) 
    mov(i)=getframe(gcf) 
end 

Q1. Сделайте набор свойств эффекта первых осей? если да, то как этого избежать?

Q2. В моем сюжете держится не получилось. Оба они были безучастны. например, используя hold. Как мне заставить работать?

Q3. Я надеюсь, что mov записывает обе оси.

P.S. Надеюсь, что clf не проблема. I должен использовать clf или если есть эквиваленты, более подходящие в моем случае, предлагайте мне.

ответ

2

Вы должны хранить возврат из функции axes и работать конкретно на течение данных осей с последующими вызовами функции, а не только текущие осей.

% Create axes outside the loop 
ax1 = axes('position',...); 
ax2 = axes('position',...); 

hold(ax1, 'on'); 

for i=1:some_number 
    plot(ax1, ...); 

    cla(ax2); % use cla to clear specific axes inside the loop 
    plot3(ax2, ...) (or fill3 but has to do with 3d rendering) 
    view(ax2, ...) 
    set(ax2, 'cameraview',...) 
    set(ax2,'projection',...) 

    mov(i)=getframe(gcf) 
end 
1

Вот отрывок из куска моего кода, участки Земельные участки орбиты трех небесных тел, которые я думаю, поможет вам:

for i = 1:j, %j is an arbitrary number input by the user 

    plot(x, y, '*') 
    plot(x2, y2, 'r') 
    plot(xa, ya, '+') 

    grid on 
    drawnow %drawnow immediately plots the point(s) 
    hold on %hold on keeps the current plot for future plot additions 

    %dostuff to x,y,x2,y2,xa,ya 

end 

две основные функции, которые вы хотите являются drawnow и hold on.

Просто обратите внимание: x, y, x2, y2, xa и ya меняются с каждой итерацией цикла, я просто пропустил этот код.

EDIT: Я считаю, что функция drawnow решит вашу проблему с помощью hold on.

Я думаю, что это может решить вашу проблему.

for i=1:some_number 
    axes('position',...) 
    plot(...); 

    drawnow  %also note that you must not put the ; at the end 
    hold on  %see above comment 

    axes('position',...) 
    clf 
    plot3(...) (or fill3 but has to do with 3d rendering) 
    view(...) 
    set(gca, 'cameraview',...) 
    set(gca,'projection',...) 
    mov(i)=getframe(gcf) 
end 
+0

Я не уверен, что вы поняли мой вопрос. Но я получил ответ от другого. Благодарю. –

Смежные вопросы