MATLAB Answers

0

Beamforming with FFT not showing Grating Lobes

Asked by Kenneth Mills on 16 Apr 2019
Latest activity Answered by Honglei Chen
on 18 Apr 2019
I want to simulate a simple array signal processing problem, but I noticed that using the FFT for beamforming does not show the anticipated grating lobes.
For example, I perform the following to generate a signal
d= 0.5; %interelement spacing (wavelengths)
N= 10; %number of elements in array
n= (0:N-1).'; %ULA
phi= 10*pi/180; %source DOA
s= exp(1j*2*pi*n*d*sin(phi)); %signal
Then I find the beamformed spectrum in one of two ways:
% 1) FFT
K= 256; %fft length
S1= abs(fftshift(fft(s,K))).^2; %beamformed spectrum
plot(S1/max(S1)); %plot normalized spectrum
% 2) "array pattern"
phi_search= (-90:0.1:90)*pi/180; %DOAs to search
S2= zeros(1,length(phi_search)); %preallocate array pattern
for i=1:length(phi_search)
v= exp(1j*2*pi*d*n*sin(phi_search(i))); %steering vector
S2(i)= abs(s'*v); %spectrum
end
figure;
plot(S2/max(S2)); %plot normalized spectrum
With d = 0.5, both methods yield the same results. However, setting d = 5 (or some other value >5) shows grating lobes only with method two.
Does anyone know why the fft function will not show grating lobes?

  0 Comments

Sign in to comment.

1 Answer

Answer by Honglei Chen
on 18 Apr 2019

This is because when you use FFT, by definition FFT covers only between 0 to 2pi. But when you have an element spacing of several wavelength, you actually sampled the unit circule many rounds. That's why the second computation is more accurate in this case. This is not to say that you cannot use FFT, but you need to be careful on interpeting the result.
HTH

  0 Comments

Sign in to comment.