Beamforming with FFT not showing Grating Lobes
14 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (1)
Honglei Chen
le 18 Avr 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 commentaires
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!