Plot end-fire array for delta=0 and Henson woodyard array for delta =pi/N. When plotting ordinary is giving better performance than Henswoodyard. make it opposite

6 次查看(过去 30 天)
clc; clear; close all;
c = physconst('LightSpeed');
fc = 300e6;
lambda = c / fc;
d_over_lambda_range = 0.1:0.02:2;
N = 15;
angles =0;
figure;
% Ordinary End-Fire Array
directivity_end_fire = zeros(size(d_over_lambda_range));
for idx = 1:length(d_over_lambda_range)
d_over_lambda = d_over_lambda_range(idx);
spacing = d_over_lambda * lambda;
array_end_fire = phased.ULA('NumElements', N, 'ElementSpacing', spacing, 'ArrayAxis', 'y','Element', phased.IsotropicAntennaElement);
array_patern = directivity(array_end_fire, fc,angles);
% Calculate the directivity in linear scale
directivity_end_fire(idx) = array_patern;
end
% Hansen-Woodyard Array
directivity_hansen_woodyard = zeros(size(d_over_lambda_range));
for idx = 1:length(d_over_lambda_range)
d_over_lambda = d_over_lambda_range(idx);
spacing = d_over_lambda * lambda;
% array_hansen_woodyard = phased.HeterogeneousULA(' ElementIndices',elementpos,'ElementSpacing', spacing, 'ArrayAxis', 'y', 'Element', phased.IsotropicAntennaElement);
% % Additional phase shift for Hansen-Woodyard array
delta = pi / N;
array_hansen_woodyard = phased.ULA('NumElements', N, 'ElementSpacing', spacing, 'ArrayAxis', 'y', 'Element', phased.IsotropicAntennaElement);
array_hansen_woodyard.Taper = delta*(0:N-1);
arrayresponse = directivity(array_hansen_woodyard,fc,angles);
directivity_hansen_woodyard(idx) =abs(arrayresponse);
end
% Plotting
plot(d_over_lambda_range, directivity_end_fire, 'DisplayName', 'Ordinary End-Fire');
hold on;
plot(d_over_lambda_range, directivity_hansen_woodyard, 'DisplayName', 'Hansen-Woodyard');
hold off;
title('Directivity of Arrays');
xlabel('d/\lambda');
ylabel('Directivity (dB)');
legend('show');
grid on;
%array_end_fire = phased.ULA('NumElements', N, 'ElementSpacing', spacing, 'ArrayAxis', 'y','Taper',);

回答(1 个)

Rangesh
Rangesh 2024-1-3
Hi Rahul,
It understand that you are investigating why the performance of the Hansen woodyard array is worse compared to that of the ordinary end fire array.
You are experiencing this difference because of the following reasons:
  • It appears that you have varied the element spacing across the range of "lambda," whereas the array element spacing should remain constant.
  • I suggest maintaining a constant spacing between the antenna elements.
  • In the case of the End fire array, the phase difference between successive elements is uniform and can be expressed as:
array_end_fire.Taper=exp(1i*2*pi*(0:N-1)/lambda*spacing);
  • Similarly, the phase difference between the Hansen woodyard array with additional phase shift can be expressed as:
array_hansen_woodyard.Taper =exp(1i*(0:N-1)*(2*pi/lambda*spacing+pi/N));
Please note that the array element taper takes on complex values, so it would be appropriate to express the phase change as a complex sinusoid.
For more information, you can refer the following link:
I hope the above suggestions resolve your query.

Community Treasure Hunt

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

Start Hunting!

Translated by