# Antenna Toolbox Directivity Appears To Saturate

2 views (last 30 days)
mike summerhays on 12 Sep 2019
Edited: Honglei Chen on 20 Sep 2019
I'm using the Phased Array System Toolbox R2019b.
I'm trying to run a 16x16 element subarray inside a panel of varying size.
--------------------------------------------------------------------------
If I make the panel 3 x 3 subarrays, I get a reported directivity of 40 dBi. This is the right answer.
fc = 8.5 GHz; lambda = 0.0353 m; element seperation = 0.6 lambda; length of one side of panel = 3*16*0.6*0.0353 = 1.0166 m
Area = 1.0335 m^2; Antenna Gain = 4*pi*A / lambda^2 = 4*pi*1.0335 / 0.0353^2 = 1.0422e+04 => 40.1795 dBi
--------------------------------------------------------------------------
If I make the panel 16 x 16 subarrays, I get a reported directivity of 46 dBi.
Antenna Gain = 4*pi*29.3992 / 0.0353^2 = 2.9648e+05 => 54.7200 dBi is what I think it should be.
If I make the panel 20 x 20 subarrays, I still get a reported directivity of 46 dBi. Source code below.
--------------------------------------------------------------------------
%% Control:
fc = 8.5e9; % Frequency of operation (Hz)
Az_Steer = 0; % Az beam steer (deg)
El_Steer = 0; % El beam steer (deg)
Panel_Subarray_Rows = 20; % Number of sub-arrays in row
Panel_Subarray_Cols = 20; % Number of sub-arrays in column
%% Constants & Derived:
c = physconst('LightSpeed'); % Lightspeed (m/s)
Steer_Vec = [Az_Steer; El_Steer]; % Steering Vector (deg)
Lambda = 3e8/fc; % Wavelength (m)
M = 16; % Sub-array number of elements on each row
N = 16; % Sub-array number of elements on each column
dy = 21.5e-3; % Sub-array spacing between elements on each row (m)
dz = 21.5e-3; % Sub-array spacing between elements on each column (m)
%% Element:
Element = phased.CosineAntennaElement('FrequencyRange',[7.75e9 8.5e9], 'CosinePower',1.0);
% Plot Element Pattern Az and El:
figure
subplot(2,1,1)
pattern(Element,fc,-90:0.5:90,0,'Type','powerdb','CoordinateSystem','polar')
title('Element Az Cut (El Angle = 0 deg)')
subplot(2,1,2)
pattern(Element,fc,0,-90:0.5:90,'Type','powerdb','CoordinateSystem','polar')
title('Element El Cut (Az Angle = 0 deg)')
%% Subarray:
% Create Subarray with Triangular Grid:
Subarray = phased.URA([N M],[dz dy],'Lattice','Triangular','Element',Element);
% View Subarray:
figure
viewArray(Subarray,'Title','BFIC Sub-Array with Triangular Grid');
% Steer Subarray:
Steer_Vec_Sub_Arry = phased.SteeringVector('SensorArray',Subarray,'PropagationSpeed',c);
w_sub = Steer_Vec_Sub_Arry(fc,Steer_Vec);
% Plot Steered Subarray - Az and El:
figure
subplot(2,1,1)
pattern(Subarray,fc,-90:0.5:90,0,'Type','directivity','CoordinateSystem','rectangular', ...
'PropagationSpeed',c,'Weights',w_sub);
title(['Subarray Az Cut (El Angle = 0 deg) For Beamsteer = ' num2str(Az_Steer) ' deg'])
subplot(2,1,2)
pattern(Subarray,fc,0,-90:0.5:90,'Type','directivity','CoordinateSystem','rectangular', ...
'PropagationSpeed',c,'Weights',w_sub);
title(['Subarray El Cut (Az Angle = 0 deg) For Beamsteer = ' num2str(El_Steer) ' deg'])
%% Array Panel:
Panel = phased.ReplicatedSubarray('Subarray',Subarray,...
'Layout','Rectangular',...
'GridSize',[Panel_Subarray_Rows Panel_Subarray_Cols], ...
'GridSpacing','Auto', ...
'SubarraySteering','Phase', ...
'PhaseShifterFrequency',fc);
% Steer Panel:
Steer_Vec_Panel = phased.SteeringVector('SensorArray',Panel,'PropagationSpeed',c);
wts_panel = Steer_Vec_Panel(fc,Steer_Vec);
figure
viewArray(Panel,'Title','Panel Using BFIC');
% Directivity:
figure
subplot(2,1,1)
pattern(Panel,fc,-90:0.5:90,0,'Type','directivity','CoordinateSystem','rectangular', ...
'PropagationSpeed',c,'Weights',wts_panel);
title(['Panel Az Cut (El Angle = 0 deg) For Beamsteer = ' num2str(Az_Steer) ' deg'])
subplot(2,1,2)
pattern(Panel,fc,0,-90:0.5:90,'Type','directivity','CoordinateSystem','rectangular', ...
'PropagationSpeed',c,'Weights',wts_panel);
title(['Panel El Cut (Az Angle = 0 deg) For Beamsteer = ' num2str(El_Steer) ' deg'])

Honglei Chen on 20 Sep 2019
Edited: Honglei Chen on 20 Sep 2019
Your array has more than 100 thousand elements so it's very large. Therefore, the calculation probably missed the narrow beam. Are you trying to plot the entire pattern or you just want to compute the directivity at a given direction? I can help provide a workaround offline. I got a directivity of about 58 dB for 16x16 case.
HTH

### Categories

Find more on Antennas, Microphones, and Sonar Transducers in Help Center and File Exchange

R2019b

### Community Treasure Hunt

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

Start Hunting!