필터 지우기
필터 지우기

Orbital Angular Momentum Vertex Beam design based on 4 phase level

조회 수: 29 (최근 30일)
Naeem
Naeem 2023년 1월 28일
댓글: Siti Hasunah 2023년 11월 28일
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
Siti Hasunah
Siti Hasunah 2023년 9월 6일
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;

댓글을 달려면 로그인하십시오.

채택된 답변

Naeem
Naeem 2023년 9월 20일
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');

추가 답변 (1개)

Image Analyst
Image Analyst 2023년 1월 28일
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
Naeem
Naeem 2023년 2월 7일
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 2023년 2월 7일
편집: Image Analyst 2023년 2월 8일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Guidance, Navigation, and Control (GNC)에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by