How to draw multiple surface plots on the same mesh?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Muhamed Sewidan
am 9 Okt. 2020
Kommentiert: Muhamed Sewidan
am 14 Okt. 2020
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?![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/375731/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/375731/image.png)
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 Kommentar
Akzeptierte Antwort
Durganshu
am 9 Okt. 2020
Bearbeitet: Durganshu
am 9 Okt. 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);
9 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!