Borrar filtros
Borrar filtros

How to plot a poincare beam showing its singularity using polarisation distribution plot

28 visualizaciones (últimos 30 días)
How to have a plot as shown in figure in MATLAB. It is polarization distribution with different C points in a poincare beam. Can anyone help me please

Respuesta aceptada

William Rose
William Rose el 21 de Jul. de 2024 a las 2:35
Editada: William Rose el 21 de Jul. de 2024 a las 2:43
[Edit: Correct spelling mistakes and add comments to the code.]
It seems the green and black in your image represents one variable (beam intensity, perhaps), and the ellipses indicate direction and amount of polarization. Polarization at any point in the disk is described by two numbers: a=orientation of major axis (from 0 to 2Pi) and b=ratio of minor axis to major axis length (from 0 to 1).
Since you did not provide data, let us make up some data. Below I create beam intensity data on the X1,Y1 grid points, and I create ellipse orientation and ratio data on the X2,Y2 grid points.
% beam intensity data (simulated)
r1=0:.02:1; th1=0:pi/18:2*pi;
X1=r1'*cos(th1);
Y1=r1'*sin(th1);
intensr=sin(r1*pi); % intensity as a function of radius
intensth=ones(size(th1)); % intensity as a function of theta
IN =intensr'*intensth;
% beam polarization data (simulated)
[X2,Y2]=meshgrid(-1:.125:1,-1:.125:1);
a=(X2+Y2)*pi/2; % orientation of polarization ellipse
b=0.2+0.8*abs(X2/max(max(X2))); % ratio of semiminor to semimajor axis length
Next: Define a plotting function that will plot a white ellipse at a specified location, with the major axis in blue. This is to recreate ellipses like in the OP's plot.
function plotpolarz(x,y,r,a,b,z0)
% Inputs: x,y=ellipse center location, r=ellipse max radius
% a=angle of semimajor axis of the polarization ellipse (0 to 2Pi)
% b=ratio of semiminor to semimajor axis length (0 to 1)
% z0=z value, for plotting, so that ellipses are above the intensity surface
u=[cos(a),sin(a)]; % semimajor axis vector
v=b*[cos(a+pi/2),sin(a+pi/2)]; % semiminor axis vector
% elps=matrix of points on the ellipse (2 columns)
elps=r*(cosd(0:30:360)'*u+sind(0:30:360)'*v);
% next plot white ellipse
plot3(x+elps(:,1),y+elps(:,2),z0*ones(length(elps),1),'-w')
hold on
% next: plot semimajor axis, blue
plot3(x+r*[u(1),-u(1)],y+r*[u(2),-u(2)],z0*[1,1],'-b')
end
Next: Plot the intensity data and the polarization ellipses.
figure
surf(X1,Y1,IN,'EdgeColor','None')
xlabel('X'); ylabel('Y'); zlabel('Intensity')
colormap([zeros(101,1),(0:.01:1)',zeros(101,1)]) % color scale similar to the OP
view(0,90); axis equal; colorbar; hold on
% Plot polarization ellipses
[imax,jmax]=size(X2);
z0=max(max(IN));
for i=1:imax
for j=1:jmax
if X2(j,i)^2+Y2(j,i)^2<=1
plotpolarz(X2(j,i),Y2(j,i),0.04,a(j,i),b(j,i),z0)
end
end
end
Done.
  2 comentarios
Aswathi K
Aswathi K el 21 de Jul. de 2024 a las 7:14
Thank you so much, I will try to plot with my data, I hope this will help me. Thanks for helping at the needful time.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Polar Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by