2 views (last 30 days)

Show older comments

I use this code to draw a Gaussian normal distribution. I want to plot several distributions at equal distance from the original one (like the figure).

How can I do so?

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

VBBV
on 9 Oct 2020

Use contourf function as

%if true

% code

% end

v2 = 0:0.00009:0.0025;

contourf(z,r,I,v2,'edgecolor','none');shading interp;

Deeds
on 9 Oct 2020

Edited: Deeds
on 9 Oct 2020

Did you try hold on?

figure;

surf(z1,r1,I1);

hold on

zlin2= linspace(-101,101,300) * lambda; %whatever shifted values you want

rLin2 = linspace(-65,65,100) * lambda; %whatever shifted values you want

[z2,r2] = meshgrid(zLin2,rLin2);

% similarly define I2 and then plot

surf(z2,r2,I2);

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!