# Phased Array Toolbox Directivity Calculation

20 views (last 30 days)

Show older comments

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?

Thank you for your help.

##### 0 Comments

### Answers (3)

Honglei Chen
on 4 May 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 Comments

Mike Susedik
on 19 Aug 2020

##### 0 Comments

Jonathan Williams
on 15 Mar 2022

Edited: Jonathan Williams
on 15 Mar 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 Comments

### See Also

### Categories

### Products

### Community Treasure Hunt

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

Start Hunting!