#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