在matlab中同时绘制两个不连续的表面

时间:2016-07-04 19:38:32

标签: matlab animation matlab-figure

我正在运行一个for循环,目前使用3个不同矩阵(代表x,y和z)的第1列的k(surf)为21 x 602维度绘制for k=1:301图。然而,同时我想冲浪情节列for 302:k+301,所以从本质上讲,我同时获得了两个磁通管的动画。

目前,我有:

p = surf(nan(21,602), nan(21,602), nan(21,602));
for k = 1:301
     % Update all of the plot objects at once
     set(p, 'XData', x(:, 1:k), ...
            'YData', y(:, 1:k), ...
            'ZData', z(:, 1:k),'facecolor', Colour, 'edgecolor',EdgeColour,...
    'facelighting','gouraud')
drawnow
end

但显然,这只是绘制当前正在编写的第一个动画。如何调整以同时绘制所需的其他列(以及其他动画)?

由于

1 个答案:

答案 0 :(得分:0)

这个怎么样:

p1 = surf([0 0 ;0 0]);
hold all
p2 = surf([0 0 ;0 0]);
for k = 1:301
    % Update all of the plot objects at once
    set(p1, 'XData', x(:,1:k), ...
        'YData', y(:,1:k), ...
        'ZData', z(:,1:k),'facecolor', Colour, 'edgecolor',EdgeColour,...
        'facelighting','gouraud')
    set(p2, 'XData', a(:,1:k), ...
        'YData', b(:,1:k), ...
        'ZData', c(:,1:k),'facecolor', Colour, 'edgecolor',EdgeColour,...
        'facelighting','gouraud')
    drawnow
end
hold off

x,y,z是一个螺旋的数据,a,b,c是另一个螺旋的数据。 您需要创建两个不同的轴(p1p2),以便surf完全连接数据

希望它能回答这个问题:)