How plot a figure like this attached figure?

1 view (last 30 days)
Hi,
I have some laser beam amplitude profile and I want to plot this profiles like follow fig in matlab.
dsds1.jpg
infact, I have tried this codes
% z1 and z2 are defined in my script as 500*500 matrix
r1=linspace(0,0.005,500);
r2=r1;
mesh(r1,r2,z1)
hold on
mesh(r1,r2,z2+2)
but I can not rotate and it not give what I want. I need help?

Accepted Answer

J. Alex Lee
J. Alex Lee on 2 Feb 2020
Edited: J. Alex Lee on 2 Feb 2020
It's because mesh expects z-data to be actual coordinates in z, but mesh (and surf) will accept a 4th argument for color
N = 500;
r1=linspace(0,0.005,N);
[X,Y] = meshgrid(r1);
figure; cla; hold on;
ax = gca;
% fig = figure;
% ax = axes(fig,'NextPlot','add');
for i = 1:10
C = rand(N); % replace with the image
Z = ones(N)*i;
% flip the order of Y and Z to get vertical slices
s = surf(ax,X,Z,Y,C,'EdgeColor','none');
end
ax.DataAspectRatio = [1,700,1] % stretch the "z"-axis view
% rotate the view
view([-65,14])
  6 Comments
Habib
Habib on 2 Feb 2020
I will run your code in 2017rb version. After, I will insert the result as comment.
Habib
Habib on 2 Feb 2020
Dear Alex, Thank You so much.
Your code correctly work .

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!