How antenna array factor is related to FFT of antenna weights

51 views (last 30 days)
I have an uniform linear antenna array of N elements with unknown (uniform) element spacing. Each element is having phase weights phi1,phi2,... ,phiN. Each element is fed with unity amplitude.
I will take the M point Fast Fourier Transform - FFT (M >> N) of this array to get a frequency response R(fr). How R(fr) is related to the array factor of the array. What is the value of inter element spacing R(fr) assumes.
>> N = 12;M = 64;
>> phis = randi([0,360],1,N)*pi/180;
>> ComplexWgts = exp(2*pi*1j*phis);
>> R_fr = abs(fftshift(fft(ComplexWgts,M)));
Where as the Array factor can be coded as
theta = (-90:90)*pi/180;
d = 0.5;% How to interpret this d from the FFT
AF = zeros(size(theta));
for n = 1:N
AF = AF + a(n) * ComplexWgts(n) * exp(1j * n * 2 * pi * d * sin(theta));
end
How to correlate between AF and R_fr?
  2 Comments
HAMDI Bilel
HAMDI Bilel on 18 May 2023
Nelements =17;
Npoints = 1024;
Ntheta = Npoints;
thetalimit = 90;
theta_deg = linspace(-thetalimit,thetalimit,Ntheta);
theta= pi*theta_deg/180;
% Uniform linear broadside equispaced array
d = 0.5; % in wavelengths
Start = ones(1,Nelements); %uniform excitation, 0 phase
AF = zeros(size(theta));
a = abs(Start);
phi = angle(Start);
ComplexWgts = exp(1j*phi);
%Classical Array Factor
for n = 1:Nelements
AF = AF + a(n) * ComplexWgts(n) * exp(1j * n * 2 * pi * d * sin(theta));
end
%AF = AF / max(abs(AF));
%--------------------------------------------------------------------------
% FFT Array Factor
AF_FFT = fftshift(fft(Start,Npoints));
figure
hold on;
plot(theta,20*log10(abs(AF)),'Color','r','LineWidth',2);
plot(theta,20*log10(abs(AF_FFT)),'Color','b','LineWidth',1);
% polar(theta,abs(AF),'r')
% polar(theta,abs(AF),'b')
ak
ak on 14 Jan 2024
what happens if d is lambda, or 2*lambda? FFT only seems to work when element spacing is lambda/2. how do i change the code so that it can work for other element spacings as well?

Sign in to comment.

Answers (1)

Honglei Chen
Honglei Chen on 28 May 2015
FFT is simply a computation tool, you can interpret the result based on your application. Using your ULA as an example, the phase shift between each element can be considered as exp(1i*2*pi*f*d*sin(theta)/c) where c is the propagation speed. On the other hand, for FFT, the phase shift between each sample is exp(1i*2*pi*f*t) . Therefore, when computing the array factor, the array can be considered as a spatially sampled sequence so instead of sampling interval t , you now use d*sin(theta)/c instead.
HTH.

Community Treasure Hunt

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

Start Hunting!