
maximum of the radiation pattern in a direction
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
FRANCISCO JAVIER DE LA PUENTE SECADES
am 9 Jan. 2020
Kommentiert: FRANCISCO JAVIER DE LA PUENTE SECADES
am 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 Kommentare
Akzeptierte Antwort
Meg Noah
am 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.
1 Kommentar
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!