maximum of the radiation pattern in a direction
5 views (last 30 days)
Show older comments
FRANCISCO JAVIER DE LA PUENTE SECADES
on 9 Jan 2020
Commented: FRANCISCO JAVIER DE LA PUENTE SECADES
on 11 Jan 2020
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
0 Comments
Accepted Answer
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)]});
It's a little more complicated if theta is not pi/2 - so that the Z values must be interpolated as well.
More Answers (0)
See Also
Categories
Find more on Antennas, Microphones, and Sonar Transducers 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!