Matlab:在同一轴上绘制2和4个3d高斯

时间:2016-06-15 12:32:17

标签: matlab gaussian surf

使用此代码:

x=linspace(-3,3,25);
y=x';               
[X,Y]=meshgrid(x,y);
z=exp(-(X.^2+Y.^2)/2);
h=surf(x,y,z);shading interp
%colormap(col4);
set(h,'LineStyle', '-','LineWidth',0.001,'EdgeColor','k');
set(gca, 'YTick',[],'XTick',[],'ZTick',[]);
box on

我可以绘制单个3d高斯: enter image description here

我现在想要绘制

1)其中2个在同一轴内并排

2)其中4个在同一轴内的两行,两行

所以基本上我想要一个带有多个高斯的单个3d图。如果这是有意义的,而不是单个高斯人的多个情节

......我知道这可能相当简单,但我很难过。任何帮助非常感谢。

这是经过编辑,以澄清我想在同一个地块上不止一个,而不是多个子情节

2高斯版本的蹩脚模型看起来像这样: enter image description here

2 个答案:

答案 0 :(得分:2)

诀窍就是使用X复制您的Yrepmat矩阵:

x=linspace(-3,3,25);
y=x';               
[X,Y]=meshgrid(x,y);

X = repmat(X, 2, 2);
Y = repmat(Y, 2, 2);

z=exp(-(X.^2+Y.^2)/2);

% note I'm using a different X and Y now in the call to surf()
h=surf(1:size(z,1),1:size(z,2),z);

shading interp
%colormap(col4);
set(h,'LineStyle', '-','LineWidth',0.001,'EdgeColor','k');
set(gca, 'YTick',[],'XTick',[],'ZTick',[]);
box on

对于同一表面中的两个高斯,使用X = repmat(X, 2, 1),或更多,repmat(X, n, k)等。

答案 1 :(得分:1)

从matlab文档中,一个子图示例看起来正如@Ander所建议的那样:

x = 0:0.1:10;
y1 = sin(2*x);
y2 = cos(2*x);

figure
subplot(2,2,1)       % add first plot in 2 x 2 grid
plot(x,y1)           % line plot
title('Subplot 1')

subplot(2,2,2)       % add second plot in 2 x 2 grid
scatter(x,y2)        % scatter plot
title('Subplot 2')

subplot(2,2,3)       % add third plot in 2 x 2 grid
stem(x,y1)           % stem plot
title('Subplot 3')

subplot(2,2,4)       % add fourth plot in 2 x 2 grid
yyaxis left          % plot against left y-axis
plot(x,y1)
yyaxis right         % plot against right y-axis
plot(x,y2)
title('Subplot 4')

结果是:

enter image description here