maximum of the radiation pattern in a direction

7 views (last 30 days)
Hello,
:
I need help to solve one problem and I'm stucked in a part, I have to design a linear array of N dipoles having a maximum of the radiation pattern in a direction given by: theta = pi/2 phi = pi/4 + 9*pi/56.
I have got this, and I have adapted to my case, but I don't know where I have to change the data tu include de direction given :
clear
close all
N=4; %number of antennas
lambda=10; %length of the antennas (m)
%positions of dipoles
X= [-lambda/2 -lambda/4 lambda/4 lambda/2]
Y= zeros(1,N);
Z= zeros(1,N);
%amplitudes of dipoles
A=ones(1,N);
ang = [pi/2 0 0 pi/2] %0:pi/4:(N-1)*pi/4; %rad
E1=A.*exp(j*ang); %field constant
%go spheric
[a1,a2,delta]=cart2sph(X,Y,Z);
phip=a1;
thetap=pi/2-a2;
RP=10; %distance at which the field is measured (m)
Rez=100; %resolution of represetation
phi=linspace(0,2*pi, 2*Rez);
theta=linspace(0,pi,Rez);
E=zeros(length(theta),length(phi));
AE=zeros(length(theta),length(phi));
XE=zeros(length(theta),length(phi));
YE=zeros(length(theta),length(phi));
ZE=zeros(length(theta),length(phi));
for u1=1:length(theta),
for v1=1:length(phi),
u=theta(u1);
v=phi(v1);
cosA=sin(u)*sin(thetap).*cos(v-phip)+cos(u)*cos(thetap);
E2=E1/RP*exp(-j*2*pi*RP/lambda).*exp(j*2*pi/lambda*delta.*cosA)*sin(u);
E3=sum(E2);
E(u1,v1)=E3;
AE(u1,v1)=abs(E(u1,v1));
XE(u1,v1)=abs(E(u1,v1))*sin(u)*cos(v);
YE(u1,v1)=abs(E(u1,v1))*sin(u)*sin(v);
ZE(u1,v1)=abs(E(u1,v1))*cos(u);
end
end
X=XE/max(max(AE));
Y=YE/max(max(AE));
Z=ZE/max(max(AE));
figure (1)
%colormap('gray')
surf(X,Y,Z)
%axis equal
axis square
xlabel('x')
ylabel('y')
zlabel('z')
Thanks for all,
Francisco

Accepted Answer

Meg Noah
Meg Noah on 11 Jan 2020
Solution, I hope!
% for a general (theta0,phi0) express the surface in spherical coordinates
% [Azimuth,Elevation,R] = cart2sph(X,Y,Z);
theta0 = pi/2;
elevation0 = pi/2 - theta0;
% since your elevation is 0, you can just take the values in the X-Y plane
% the Z values are not players in this question
[Azimuth,R] = cart2pol(X,Y);
Azimuth = wrapTo2Pi(Azimuth);
phi0 = pi/4 + 9*pi/56;
% your input values were generated on this cadence
arrAz = linspace(0, 2*pi, 2*Rez)';
% just to be fancy - strip away every point that is not the maximum
% distance from the origin at each aximuth angle
arrMaxR = nan(numel(arrAz),1);
for iAz = 1:numel(arrAz)
idx = find(abs(Azimuth-arrAz(iAz)) < 2*pi/Rez);
if (~isempty(idx))
tmpR = R(idx);
arrMaxR(iAz) = max(tmpR(:));
end
end
figure()
plot(X,Y);
hold on; axis equal; axis tight;
plot(arrMaxR.*cos(arrAz),arrMaxR.*sin(arrAz),'.k');
xlabel('X'); ylabel('Y');
maxRInDirectionPhi0 = interp1(arrAz,arrMaxR,phi0,'pchip');
p1 = [0 0];
p2 = [ maxRInDirectionPhi0.*cos(phi0) maxRInDirectionPhi0.*sin(phi0)];
dp = p2-p1;
quiver(p1(1),p1(2),dp(1),dp(2),0,'MaxHeadSize',0.3,'color','k','linewidth',3)
title({'Radiation Pattern In X-Y Plane'; ...
['R(\theta=\pi/2,\phi_0=\pi/4 + 9\pi/56)=' num2str(maxRInDirectionPhi0)]});
AntennaPattern.png
It's a little more complicated if theta is not pi/2 - so that the Z values must be interpolated as well.
  1 Comment
FRANCISCO JAVIER DE LA PUENTE SECADES
I thank you very much for the answer, it has been very helpful.
Finally I would like to know if you know any way to calculate the directivity of that antenna, without using any addon as an antenna toolbox. I have tried formulas with the array factor but I have not obtained a logical solution.

Sign in to comment.

More Answers (0)

Categories

Find more on Analysis, Benchmarking, and Verification in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!