Как нарисовать несколько участков поверхности в одной сетке в MATLAB?

#matlab #surf

#matlab #surf

Вопрос:

Я использую этот код для рисования нормального распределения по Гауссу. Я хочу построить несколько распределений на равном расстоянии от исходного (как на рисунке).

введите описание изображения здесь

 lambda = 1;               % wavelength

E0 = 1;                   % max value of E-field amplitude

% ==================================================================
% prepare the coordinates mesh
% ----------------------------

zLin = linspace(-201,201,400) * lambda;     % z-coordinate (horizontal)

rLin = linspace(-65,65,100) * lambda;       % radius-coordinate (vertical)

[z,r] = meshgrid(zLin,rLin);                % create mesh


% ===================================================================

wFactor = 4;                 
    
w0 = wFactor * lambda;                  % minimal waist

zR = pi* w0^2 / lambda;                 % Rayleigh length

w = w0 * sqrt( 1   (z / zR) .^2 );      % Beam radius at any arbitrary distance (equ. 3)

% Irradiance
eta = 377;                              % for free space
I0 = abs(E0)^2/eta;

I = I0 .* (w0 ./ w).^2 .* exp( -2*(r./w).^2 );

surf(z,r,I); shading interp
  

Комментарии:

1. Вы можете либо сложить графики вместе, а затем выполнить 1 график, либо использовать hold on

2.Спасибо за быстрый ответ. Я уже пытался это сделать, но я получаю ту же сетку с распределением, но со смещением НЕ НА ТОЙ ЖЕ СЕТКЕ. Я использовал этот код dist = 50; surf(z1,r1 dist,I1)

3. Правильно, потому что вы меняете, где строить то же I1 самое, не меняя I1 себя. Вам нужно сделать I2 со смещением

4. Хорошо, я попытался добавить некоторое смещение к I1, например, I2 = I1 50, и это сработало правильно. Теперь я пытаюсь сделать то же самое для I3, но вся фигура имеет runid. I2 добавляется над I1 (по оси y), как я могу добавить I3 рядом с I1 по оси X