Azzera filtri
Azzera filtri

Orbital Angular Momentum Vertex Beam design based on 4 phase level

29 visualizzazioni (ultimi 30 giorni)
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 Commento
Siti Hasunah
Siti Hasunah il 6 Set 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;

Accedi per commentare.

Risposta accettata

Naeem
Naeem il 20 Set 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');

Più risposte (1)

Image Analyst
Image Analyst il 28 Gen 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 Commenti
Naeem
Naeem il 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 il 7 Feb 2023
Modificato: Image Analyst il 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.

Accedi per commentare.

Categorie

Scopri di più su Guidance, Navigation, and Control (GNC) in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by