Beamforming with FFT not showing Grating Lobes
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (1)
Honglei Chen
am 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 Kommentare
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!