# Plot 2D Gaussian spot and histograms of horizontal and vertical axis in one figure

22 views (last 30 days)

Show older comments

I am simulating a spot of a Gaussian laser beam. I've added my simple code below. It creates three figures: one plot of the Gaussian spot itself, and two plots of the histograms of the vertical coordinates and horizontal coordinates. What I would like to do is create one figure with these three plots, with the histograms along their corresponding axes. I've added an example of this below that I created by combining the figures in MS Paint.

I would like to create this picture in MATLAB instead, does anyone know if this is possible? If yes, how?

Thank you in advance.

% Parameters of the Gaussian beam

M2 = 1.45; % M-squared, beam propagation factor

lambda = 800E-9; % Wavelength of the light [m]

w_init = 0.010; % Initial beam waist before the mirror [m]

sigma_pos = w_init/2; % Standard deviation of the initial Gaussian position distribution [m]

% Generating the random positions of 10000 light rays according to a

% Gaussian distribution

Nrays = 10000; % Number of rays

sigma_posy = sigma_pos/sqrt(2);

sigma_posz = sigma_posy;

qy0 = normrnd(0, sigma_posy, 1, Nrays);

qz0 = normrnd(0, sigma_posz, 1, Nrays);

% Plotting spot

figure()

box on

plot(qz0, qy0, 'b.')

xlabel('z [m]')

ylabel('y [m]')

axis square

%% Histogram plot

figure()

box on

histfit(sqrt(2)*qz0)

xlim([-0.015 0.015])

ylabel('Intensity')

figure()

box on

histfit(sqrt(2)*qy0)

xlim([-0.015 0.015])

ylabel('Intensity')

##### 0 Comments

### Accepted Answer

Rohit Pappu
on 22 Mar 2021

The above diagram can be created using subplot (for creating the grid of plots) and camroll (for rotating the histogram)

% Create a 3x3 subplot

% Z intensities

subplot(3,3,[1,2]);

box on

h1 = histfit(sqrt(2)*qz0)

xlim([-0.015 0.015])

ylabel('Intensity')

ax1 = h1.Parent;

set(ax1, 'xticklabel' ,[]);

% Plotting spot

subplot(3,3,[4 5 7 8]);

box on

f = plot(qz0, qy0, 'b.')

xlabel('z [m]')

ylabel('y [m]')

axis square

% Y intensities

subplot(3,3,[6 9])

box on

h2 = histfit(sqrt(2)*qy0)

xlim([-0.015 0.015])

ylabel('Intensity')

ax2 = h2.Parent;

camroll(ax2,-90) % Rotate the plot clockwise by 90 degrees

set(ax2, 'XTickLabel',[]);

##### 3 Comments

Rohit Pappu
on 22 Mar 2021

Edited: Rohit Pappu
on 22 Mar 2021

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!