在MATLAB中使用surf创建沿z轴的二维堆叠矩阵

在MATLAB中使用surf创建沿z轴的二维堆叠矩阵,matlab,graphics,matlab-figure,Matlab,Graphics,Matlab Figure,下图只是带有surf的二维阵列的表示。我想创建一个类似的图,其中10个二维阵列堆叠在一起,沿z轴有某种偏移 figure(); surf(X); colormap(hsv); shading interp; campos([-70 -150 80]); grid on; set(gcf,'color','w'); 只需按住键,多次呼叫surf,应用逐渐增大的偏移量即可 默认情况下,偏移量将影响每个曲面显示的颜色。下面是一个包含三个二维阵列的示例。请注意,每种情况下的峰间振幅不同 x{1} =

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

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

只需按住
键,多次呼叫
surf
,应用逐渐增大的偏移量即可

默认情况下,偏移量将影响每个曲面显示的颜色。下面是一个包含三个二维阵列的示例。请注意,每种情况下的峰间振幅不同

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

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

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问得好。不能使用
pcolor
AFAIK,但可以使用
surf
,使用两个不同的输入参数指定高度和颜色。这也可以应用于原始(非平面)曲面,使其颜色与偏移无关。见编辑后的答案