2017-09-24 183 views
3

下图只是带有surf的2d数组的示意图。我想创建一个类似的图,其中10个这样的二维数组彼此堆叠在一起,并且沿着z轴有一些偏移量。在MATLAB中使用surf创建堆叠的2d矩阵

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

enter image description here

回答

3

只需拨打surf几次hold on,将逐渐增加所抵消。

通过默认(1输入版本surf),偏移量将影响每个表面显示的颜色。这里有三个2D阵列的例子。请注意,峰 - 峰值幅度对于每一个都是不同的。

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 

enter image description here

,以防止影响颜色偏移量,即实现一致的颜色为所有表面,使用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 

enter image description here

为了根儿吃叠飞机(没有高度的变化)与依赖于价值颜色:修改输入的参数如下:

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 

enter image description here

+0

谢谢你的快速回复。是的,它会影响每个表面显示的颜色。由于我很好奇,我想问问在这种情况下是否可以使用'pcolor'代替冲浪?我会放松海拔,但没关系。 –

+1

@ShaibalAhmed好问题。它不能用'pcolor' AFAIK完成,但它可以通过'surf'使用两个不同的输入参数来指定高度和颜色。这也可以应用于原始(非平坦)曲面以使其颜色与偏移无关。见编辑的答案 –