在MATLAB中使用surf创建沿z轴的二维堆叠矩阵
下图只是带有surf的二维阵列的表示。我想创建一个类似的图,其中10个二维阵列堆叠在一起,沿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} =
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
,使用两个不同的输入参数指定高度和颜色。这也可以应用于原始(非平面)曲面,使其颜色与偏移无关。见编辑后的答案