Filter löschen
Filter löschen

Orbital Angular Momentum Vertex Beam design based on 4 phase level

29 Ansichten (letzte 30 Tage)
Hello Everyone,
I designed Orbital Angular Momentum (OAM) using the following MATLAB code
NUM = 100;
x = linspace(-12,12,NUM);
y = x;
[X,Y] = meshgrid(x,y);
charge =1;
theta= charge*atan2(X,Y);
Amp = ones(NUM);
OAM = Amp.*exp(1i*theta);
This code will generate OAM consisting of multi phase values. Whereas, I need an OAM which consist of only 4 phase values. Here, for the understanding I am attaching a picture of the OAM phase plate. A simple distribution like the following picture or generating such OAM distribution by formula both can help for my requirement.
  1 Kommentar
Siti Hasunah
Siti Hasunah am 6 Sep. 2023
Hi, I tried to generate an OAM wave-front phase using MATLAB and want to see the results with different OAM mode. I managed to get wave-front for OAM mode = 0 and 1, but then the result doesn't differ for higher OAM mode more than 1. How can I get the different wave-front just like below attached picture of mode l = 2?
These are the codes I used to generate the wave front:
% Define parameters
desired_distance = 2.0; % Desired transmission distance (2 meters)
wavelength = 1.551e-6; % Wavelength (in meters)
num_points_x = 200; % Number of points in the x-direction
num_points_y = 200; % Number of points in the y-direction
x = linspace(-desired_distance/2, desired_distance/2, num_points_x);
y = x;
[X, Y] = meshgrid(x, y);
% OAM mode parameters
l = 1; % OAM mode order (change to the desired order)
k = 2 * pi / wavelength; % Wavenumber
% Calculate azimuthal angle theta
theta = atan2(Y,X);
% Calculate the OAM wave-front phase
phase = l * theta;
% Display the phase pattern
figure;
imagesc(x, y, phase);
axis equal;
title(['OAM Mode (l = ', num2str(l), ') Wave-Front Phase Pattern']);
xlabel('X (meters)');
ylabel('Y (meters)');
colorbar;

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Naeem
Naeem am 20 Sep. 2023
For the higher order OAM you can use the following code. Jucst change the charge values and you will get the desired OAM.
clear;
clc;
NUM = 100;
x = linspace(-50,50,NUM);
y = x;
[X,Y] = meshgrid(x,y);
R = sqrt(X.^2+Y.^2);
charge =3;
theta = charge*atan2(X,Y);
%imagesc(theta)
Amp = ones(NUM);
Ex = Amp.*exp(1i*theta).*(R<50);
Ey = Amp.*exp(1i*theta).*exp(1i*pi/2).*(R<50);%
%Ey = Amp.*exp(1i*theta);
Exx = Amp.*exp(1i*theta);
figure;imagesc(x,y,angle(Ex));colorbar;daspect([1 1 1]);set(gca,'ydir','normal');

Weitere Antworten (1)

Image Analyst
Image Analyst am 28 Jan. 2023
How about this:
NUM = 100;
x = linspace(-12,12,NUM);
y = x;
[X,Y] = meshgrid(x,y);
charge =1;
theta= charge*atan2d(X,Y);
subplot(2, 1, 1);
imshow(theta, []);
impixelinfo
Amp = zeros(NUM);
% Top triangle.
mask = theta <= -135 | theta > 135;
Amp(mask) = pi/2;
% Right triangle.
mask = theta >= 45 & theta < 135;
Amp(mask) = 0
% Bottom triangle.
mask = theta >= -45 & theta < 45;
Amp(mask) = 3 * pi / 2
% Left triangle.
mask = theta <= -45 & theta > -135;
Amp(mask) = pi
subplot(2, 1, 2);
imshow(Amp, []);
impixelinfo
colorbar
  2 Kommentare
Naeem
Naeem am 7 Feb. 2023
Dear Image Analyst,
Thank you so much for the prompt response and for your kind help. That’s exactly what I need it help me a lot and now I am utilizing it. Could you also please comment on generating OAM phase mask for l=2 (topological charge=2). I.e the phase mask in which the 4 phases are repeated twice, or the phase mask consist of 8 equally distributed phase values then I will use accordingly. Your help regarding this issue is appreciable thanks in advance.
Image Analyst
Image Analyst am 7 Feb. 2023
Bearbeitet: Image Analyst am 8 Feb. 2023
I don't know what that is. Do you have an example?
If you need 8 or more sectors, you can simply put my triangle code into a loop over all sector angles. Is that what you want to do? I think you're skilled enough to do that -- just make a for loop.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Guidance, Navigation, and Control (GNC) 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!

Translated by