How to calculate the angle deviation w.r.t frequency band in a Wideband Scanning Array?

11 views (last 30 days)
When you plot a steered array response for a wideband scanning array using phase shifter model it gives rise to squint effect i.e. the peak location moved away from the desired direction. This effect increases as you move far from your central frequency. To further analyse this squint effect I want to plot the angle deviation vs the frequency band. Please refer to my code for better clarity.
if true
clear all;
fc = 3e8; % Center Frequency
c = 3e8; % Speed of light
hele = phased.IsotropicAntennaElement('BackBaffled',true); % Isotropic Antenna Element
href = phased.ULA(64,0.5*c/fc,'Element',hele); % Linear array model
hstvref = phased.SteeringVector('SensorArray',href,'PropagationSpeed',c);
fsteer = [1 1.03 1.06]*fc; % Wideband Scanning
steerang = 30; % Steered angle
wref = squeeze(step(hstvref,fc,steerang));
subplot(2,1,1)
plotResponse(href,fsteer,c,'Weights',wref);
title('ULA Azimuth Cut'); axis([-90 90 -50 0]);
subplot(2,1,2)
plotResponse(href,fsteer,c,'Weights',wref); axis([25 35 -5 0])
title('ULA Azimuth Cut, Peak Zoom View');
end
Any suggestion or experience?
++ Soumya
  1 Comment
Muthu Annamalai
Muthu Annamalai on 25 Jun 2013
You could do it analytically, which I don't know details for, or use MATLAB. In these simulations you will run it for various bandwidths of your antenna array, and calculate for each the peak and its offset from the center/desired position - to give you a measure of deviation. So you have x, y, and you can plot it?
I don't know if this is what you are looking for, but seems simple to me.

Sign in to comment.

Accepted Answer

Honglei Chen
Honglei Chen on 27 Jun 2013
You can use ArrayResponse and findpeaks together to achieve what you want.
For example, after your code above, you can do
myArrayResp = phased.ArrayResponse('SensorArray',href,'PropagationSpeed',c,...
'WeightsInputPort',true);
deltaang = zeros(1,numel(fsteer));
anggrid = 25:0.5:35;
for m = 1:numel(fsteer)
resp = step(myArrayResp,fsteer(m),anggrid,wref);
[~,idx] = findpeaks(abs(resp),'NPeaks',1,'SortStr','descend');
deltaang(m) = anggrid(idx)-steerang;
end
figure;
stem(fsteer,deltaang);

More Answers (0)

Community Treasure Hunt

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

Start Hunting!