2016-06-15 11 views
0

С этим кодом:Matlab: участок 2 и 4 3d гауссианы на тех же осях

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

+1

subplot? что вы хотите –

+1

Возможный дубликат [Построение нескольких графиков в одном окне с помощью Matlab] (http://stackoverflow.com/questions/26233064/plotting-multiple-graphs-in-a-single-window-by- using-matlab) – Suever

+0

Извинения, не было достаточно точным - им надеялось построить более одного на тех же осях, а не несколько сюжетов. Редактировать выше – user3519116

ответ

2

Хитрость просто повторить ваши X и Y матрицы с помощью repmat:

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

Это именно то, что я хотел. Огромное спасибо! – user3519116

+1

Я предполагаю, что его можно было бы оптимизировать слегка, реплицируя 'z', а не' X' и 'Y', но в целом очень приятно! –

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') 

, которые приводят к s в:

enter image description here

+0

Я думаю, что это было то, что вам нужно, в противном случае попробуйте построить несколько строк в 1 графе: 'plot (x, y1, x, y2)' –

+0

Спасибо за ваш ответ и извинения за неточность - Im в основном после мулизма gaussians на том же участке , а не несколько графиков, если это имеет смысл? – user3519116

 Смежные вопросы

  • Нет связанных вопросов^_^