Beamforming with FFT not showing Grating Lobes

조회 수: 5 (최근 30일)
Kenneth Mills
Kenneth Mills 2019년 4월 16일
답변: Honglei Chen 2019년 4월 18일
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?

답변 (1개)

Honglei Chen
Honglei Chen 2019년 4월 18일
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

Community Treasure Hunt

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

Start Hunting!

Translated by