Why is the radiation pattern does not show the required steering angle?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
ZIYI WENG
le 7 Mai 2021
Commenté : ZIYI WENG
le 10 Mai 2021
N = 16;%number of elements
wl = 1;%wavelength
k = 2.*pi./wl;
d = wl./2;%distance
f = zeros(1,180);%empty array for field
AF = zeros(1,100);%empty array for complec weights
thi = -45;%The scan angle
angle_radi = thi.*pi./180;%angle to radian
phi= (2.*pi.*d .*sin(angle_radi))./wl;%equation for phase shift
for a = 1:N %for loop to repeat until the Nth phase shift
AF(a)= (a-1).*phi;%First number = (1-1)*phi
while AF(a) > 2*pi
AF(a) = AF(a) - 2.*pi;
if AF(a)<= 2*pi;break;end
end %minimize the data if it is larger than 2pi
while AF(a) < -2*pi
AF(a) =AF(a) + 2*pi;
if AF(a) >= -2*pi;break;end
end %maximize the data if it is smaller than -2pi
end%does not affect the result but mitigate the calculation
as = AF(2)+AF(3)+AF(4)+AF(5)+AF(6)+AF(7)+AF(8)+AF(9);%weights in total
for th =1:360 %angle from 1 to 360
s = 0
angle_1rad(th) = th.*pi/180;%angle to radian
for i = 1:N
s = s + exp((-1j).*k.*(i-1).*d.*sin(angle_1rad(th))+as)%equation for field
end
f(th)= abs(s);
end
M = max(f);
z = f./M;%normalize the data
figure
polarplot(angle_1rad+as,z);
%title('linear polar plot');
0 commentaires
Réponse acceptée
David Goodmanson
le 8 Mai 2021
Modifié(e) : David Goodmanson
le 8 Mai 2021
Hi ZW,
In the code below, the key line is
s = s + exp((-1j*k*d*(i-1).*sin(angle_1rad(th))) +1j*AF(i)); %equation for field
which is simply the sum of N phase angles due to propagation at the given angle, each multplied by the phase angle AF required to aim the beam at -45 degrees. I don't know the intent of the sum as = AF(2) + ...AF(9), but it is not necessary. I left out the while loops changing the values of angles by multiples of 2pi since it is unnecessary for accuracy (unless the number of antenna elements gets into maybe millions).
The polar plot shows a peak at -45 degrees and an equal peak at -135 degrees. With your geometry the line of emitters is the plus and minus vertical y axis, 90 degrees and 270 degrees, so there is equal emission on each side of the antenna as required.
The second code shortens things up by replacing some of the for loops with the vectorized version. (the code also uses exp(+1j*k*x)-type wave propagation rather than exp(-1j*k*x), since the former seems more intuitive).
N = 16; % number of elements
wl = 1; % wavelength
k = 2.*pi./wl;
d = wl./2; % distance
f = zeros(1,360); % empty array for field
AF = zeros(1,100); % empty array for complec weights
thi = -45; % The scan angle
angle_radi = thi.*pi./180; % angle to radian
phi= (k.*d .*sin(angle_radi)); % eqn for phase shift [in terms of k]
for a = 1:N %for loop to repeat until the Nth phase shift
AF(a)= (a-1).*phi; % First number = (1-1)*phi
end
%as = AF(2)+AF(3)+AF(4)+AF(5)+AF(6)+AF(7)+AF(8)+AF(9);%weights in total
for th =1:360 %angle from 1 to 360
s = 0;
angle_1rad(th) = th.*pi/180; % angle to radian
for i = 1:N
s = s + exp((-1j*k*d*(i-1).*sin(angle_1rad(th)))+1j*AF(i)); %equation for field
end
f(th)= abs(s);
end
%
M = max(f);
z = f./M;%normalize the data
figure(1)
polarplot(angle_1rad,z);
title('linear polar plot');
N = 16; % number of elements
wl = 1; % wavelength
k = 2*pi/wl;
d = wl/2; % distance
thi = -45; % The scan angle
thirad = thi.*pi./180; % angle to radian
f = zeros(1,360);
anglerad = zeros(1,360);
phi= (k*d*sin(thirad)); % eqn for phase shift [in terms of k]
AF = (0:N-1)*phi;
for th =1:360 % angle from 1 to 360
anglerad(th) = th.*pi/180; % angle to radian
thvecN = k*d*(0:N-1)*sin(anglerad(th)); % phase angles due to propagation
s = sum(exp(1j*(thvecN-AF)));
f(th)= abs(s);
end
z = f/max(f); % normalize the data
figure(2)
polarplot(anglerad,z);
title('linear polar plot');
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Antennas, Microphones, and Sonar Transducers dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!