# Phased Array Toolbox Directivity Calculation

16 Ansichten (letzte 30 Tage)
Carl Steens am 3 Mai 2020
Bearbeitet: Jonathan Williams am 15 Mär. 2022
Hello,
I am trying to reconcile the outputs of the MATLAB Phased Array Toolbox directivity calculations with my textbook theory.
Given an array of 4 isotropic elements, I expect the peak directivity at boresight to be 6 dBi.
If I use the MATLAB function for a linear array, this pans out:
>> f = 3e8; lambda = 3e8/f;
>> element = phased.IsotropicAntennaElement();
>> array = phased.ULA('Element',element,'NumElements',4,'ElementSpacing', lambda/2);
>> directivity(array,f,0)
ans =
6.0240
However if I use the MATLAB function for a rectangular array, I do not get 6 dB:
>> f = 3e8; lambda = 3e8/f;
>> element = phased.IsotropicAntennaElement();
>> array = phased.URA('Element',element,'Size',[2 2],'ElementSpacing', lambda/2);
>> directivity(array,f,0)
ans =
7.0906
Am I missing something obvious here?
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Antworten (3)

Honglei Chen am 4 Mai 2020
It would be helpful if you could share which textbook theory you are referring too. Directivity is often used interchangeablly with the term gain but the gain referred to by antenna engineers are quite different than the gain referred to array signal processing engineers.
The gain for arrays ignal processing engineers are measured by signal to noise ratio between what we can achieve using an array and what we can acheive using a single element. In this case, when you have 4 elements, the signal to noise ratio gain is always 4 along boresight, which translates to 6 dB. To compue this gain, we can use phased.ArrayGain.
The gain for antenna engineers, or directivity when we assume efficiency is 1, measures how focused the power is radiated between an array and an isotropic antenna. This is what directivity() computes and the result is actualy in dBi, where i stands for isotropic (although I've see dB used in literature and probably also makes it more confusing). The computation of directivity actually consider not only the number of elements, but also how they are placed in the array. Therefore, different geometry could lead to different result. In your case, a ULA is istropic in elevation cut along boresight yet a URA will have a pencil beam around the boresight. So it does look like the URA is more focused than ULA, thus a higher directivity seems reasonable.
HTH
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

Mike Susedik am 19 Aug. 2020
Differece between a linear array of 4 isotropic elements and a rectagular array, 2x2 of isotropic elements. The rectangular is focused in 2 planes, not just 1.
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

Jonathan Williams am 15 Mär. 2022
Bearbeitet: Jonathan Williams am 15 Mär. 2022
The answer to your question is in Van Trees, "Optimum Array Processing" section 4.1.1.2. There is no short answer, but it is correct that the directivity of a planar array is not the same as a linear array for the same number of elements. The derivation is complicated, but I have created a function that calculates the directivity of an arbitrary planar array per Van Trees, and so far it seems to produce the same answer as the array toolbox function.
function Directivity = directiv_planar(pos,fc,w)
% Calculates the directivity of an arbitrary planar (or linear) array
% Reference Van Trees section 4.1.1.2
% Inputs:
% w is a 1xN taper vector, assumed to be uniform if not provided
% The values are the amplitude tapers of the elements.
% pos is a 2xN vector of element 2x1 position vectors.
% Outputs:
% Directivity of the array
if nargin <3
w = ones(size(pos,2),1);
end
c = physconst('LightSpeed');
lambda = c/fc;
if sum(any(w<0))>0
return
end
v = w./abs(w);
P = zeros(size(pos,2),size(pos,2),2);
for i = 1:size(pos,2)
P(i,:,1) = pos(1,i) - pos(1,:);
P(i,:,2) = pos(2,i) - pos(2,:);
end
p = sqrt(sum(P.^2,3));
% the sinc function adds pi - sin(pi*x)/(pi*x)
B = sinc(2./lambda.*p);
% In case "sinc" is not available, this code implements it
% B=ones(size(x));
% i=find(x);
% B(i)=sin(pi*x(i))./(pi*x(i));
Directivity = 10*log10((abs((w'*v))^2)/(w'*B*w));
end
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Array Geometries and 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!

Translated by