Creating a Large Phased Array Using Subarrays with Phase Centers at Each Element

9 views (last 30 days)
I'm trying to model and compare the results of a standard URA phased array versus one made of subarrays with element-wise steering. In the code below, I create a full array without subarrays of the final size, a reference subarray, and then a full array using subarrays. I believe that if I use the same steering weights from the single full array for the elements in the array made of subarrays, I should be similar beam patterns. This works fine when the weights are all 1 (boresight beam) but falls apart as soon as the steering angle, so I think I'm incorrectly interpreting the weights for subarrays.
steerang = 45; % Steering angle
fc = 9.345e9; % Center frequency in Hz
c = 3e8; % Speed of light
N = [16 16]; % Elements per subarray in each dimension
spacing = 0.5; % Element spacing in wavelengths
Nsubarray = [3 3]; % Number of subarrays in Az and El
antenna = phased.IsotropicAntennaElement('BackBaffled',true);
% reference array (full size) and reference subarray
refUra = phased.URA(N .* Nsubarray, [spacing*c/fc spacing*c/fc],'Element',antenna);
refSub = phased.URA(N, [spacing*c/fc spacing*c/fc],'Element',antenna);
steeringvec_refUra = phased.SteeringVector('SensorArray',refUra,...
'PropagationSpeed',c);
wref = steeringvec_refUra(fc,steerang);
steeringvec_refSub = phased.SteeringVector('SensorArray',refSub,...
'PropagationSpeed',c);
wrefSub = steeringvec_refSub(fc,steerang);
figure
subplot(2,1,1), pattern(refUra,fc,-180:180,0,'Type','powerdb',...
'CoordinateSystem','rectangular','PropagationSpeed',c);
title('Full Array Azimuth Cut Boresight'); axis([-90 90 -50 0]);
subplot(2,1,2), pattern(refUra,fc,-180:180,0,'Type','powerdb',...
'CoordinateSystem','rectangular','PropagationSpeed',c,'Weights',wref);
title('Fully Array Azimuth Cut Steered'); axis([-90 90 -50 0]);
figure
subplot(2,1,1), pattern(refSub,fc,-180:180,0,'Type','powerdb',...
'CoordinateSystem','rectangular','PropagationSpeed',c);
title('Subarray Azimuth Cut Boresight'); axis([-90 90 -50 0]);
subplot(2,1,2), pattern(refSub,fc,-180:180,0,'Type','powerdb',...
'CoordinateSystem','rectangular','PropagationSpeed',c,'Weights',wrefSub);
title('Subarray Azimuth Cut Steered'); axis([-90 90 -50 0]);
% Array of subarrays with each element a phase center
replicatedURA = phased.ReplicatedSubarray('Subarray',refSub,...
'Layout','Rectangular',...
'GridSize',Nsubarray,'GridSpacing','Auto','SubarraySteering', 'Custom' );
figure;
viewArray(replicatedURA,'Title','Tiled Array');
steeringVecReplicatedURA = phased.SteeringVector('SensorArray',replicatedURA,...
'PropagationSpeed',c, 'IncludeElementResponse', true);
ws = ones(256,9);
wref2 = wrefSub * ones(1,(prod(Nsubarray)));
figure
pattern(replicatedURA,fc,-180:180,0,'Type','powerdb',...
'CoordinateSystem','rectangular','PropagationSpeed',c,'ElementWeights',wref2);
title('Steered URA Azimuth Cut'); axis([-90 90 -50 0]);

Answers (1)

ubaid haroon
ubaid haroon on 27 May 2020
Thats because when you set "SubSteering" to "Custom", you have to manually compute the time delay. MATLAB does not allow you to apply taper to each element in a subarray configuration and time delays together.

Community Treasure Hunt

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

Start Hunting!