【问题标题】:Plotting two disconnnected surfaces simultaneously in matlab在matlab中同时绘制两个断开的曲面
【发布时间】:2016-07-04 19:38:31
【问题描述】:

我正在运行一个 for 循环,该循环当前使用 3 个不同矩阵(代表 x、y 和 z)的 1:k (for k=1:301) 列(尺寸为 21 x 602)为 surf 绘图设置动画。但是,同时我想浏览绘图列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

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

谢谢

【问题讨论】:

    标签: matlab animation matlab-figure


    【解决方案1】:

    这个怎么样:

    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 不能完全连接数据

    希望它能回答问题:)

    【讨论】:

    • 由于某种原因,这也是一个错误!
    • 索引超出矩阵维度。大号错误(第 79 行)set(p, 'XData', x(:, [1:k N/2:N/2+k]), ...
    • 哦,等等,我想我已经从使 x、y 和 z 更小的代码中取出了一些东西。我要把它们改回来再跑一次
    • 我现在也编辑了它,所以它需要x(:, [1:k N/2+1:N/2+k]),因为不复制x(或yz)中的N/2元素
    • 它现在可以运行了,但是它形成了一个变形的单一形状,而不是按照要求形成两个单独的管子!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    相关资源
    最近更新 更多