【问题标题】:Create stacked 2d matrix along z axis with surf in MATLAB在 MATLAB 中使用 surf 创建沿 z 轴的堆叠二维矩阵
【发布时间】:2017-09-24 21:46:12
【问题描述】:

下图只是一个带有 surf 的二维数组的表示。我想创建一个类似的图形,其中 10 个这些 2d 阵列彼此堆叠在一起,沿 z 轴有某种偏移。

figure();
surf(X);
colormap(hsv);
shading interp;
campos([-70 -150 80]);
grid on;
set(gcf,'color','w');

【问题讨论】:

    标签: matlab graphics matlab-figure


    【解决方案1】:

    只需使用hold on 多次调用surf,应用逐渐增加的偏移量。

    默认surf 的 1 输入版本),偏移会影响每个表面显示的颜色。这是一个包含三个二维数组的示例。请注意,每一个的峰峰值幅度是不同的。

    x{1} = .2*peaks(30);
    x{2} = .4*peaks(30);
    x{3} = .8*peaks(30); % cell array containing three 2D arrays
    offset = 7; % desired offset
    hold on
    for k = 1:numel(x)
        surf(x{k} + offset*(k-1))
    end
    campos([-100 -170 90])
    grid on
    

    为防止偏移影响颜色,即为所有表面实现一致的颜色,请使用surf 的 2 或 4 输入版本分别指定高度和颜色:

    x{1} = .2*peaks(30);
    x{2} = .4*peaks(30);
    x{3} = .8*peaks(30);
    offset = 7;
    hold on
    for k = 1:numel(x)
        surf(x{k} + offset*(k-1), x{k}) % Only this line has been changed
    end
    campos([-100 -170 90])
    grid on
    

    要根据值生成具有颜色的堆叠平面(没有高度变化):修改输入参数如下:

    x{1} = .2*peaks(30);
    x{2} = .4*peaks(30);
    x{3} = .8*peaks(30);
    offset = 7;
    hold on
    for k = 1:numel(x)
        surf(repmat(offset*(k-1), size(x{k})), x{k}) % Only this line has been changed
    end
    campos([-100 -170 90])
    grid on
    

    【讨论】:

    • 感谢您的快速回复。是的,它确实会影响每个表面显示的颜色。由于我很好奇,我想问在这种情况下是否也可以使用“pcolor”而不是 surf?我会放松海拔,但没关系。
    • @ShaibalAhmed 好问题。 pcolorAFAIK 无法做到这一点,但 surf 可以做到这一点,使用两个不同的输入参数来指定高度和颜色。这也可以应用于原始(非平面)表面,以使其颜色独立于偏移。查看编辑后的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2017-06-14
    • 2022-09-30
    • 2021-07-22
    • 1970-01-01
    • 2019-01-20
    相关资源
    最近更新 更多