maximum of the radiation pattern in a direction

6 次查看(过去 30 天)
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

采纳的回答

Meg Noah
Meg Noah 2020-1-11
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 个评论
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.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Antennas, Microphones, and Sonar Transducers 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by