matlab中的两个同时图

时间:2013-06-13 12:52:55

标签: matlab animation plot axes

我想在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。在我的情节坚持不起作用。两者都是不稳定的。喜欢使用延迟。我如何使它工作?

Q3。我希望mov记录两个轴。

P.S。我希望clf不是问题。我必须使用clf,或者如果在我的情况下有更合适的等价物,请建议我。

2 个答案:

答案 0 :(得分: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 :(得分: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

您需要的两个主要功能是drawnowhold on

请注意:x,y,x2,y2,xa和ya随循环的每次迭代而变化,我刚刚省略了该代码。

编辑:我相信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