fft beamforming  RF Cafe Forums

tsuzu

Post subject: fft beamforming
Posted: Tue Apr 12, 2005 3:09 am



i'm a beginner in this area. i just learned about
the basic algorithm of fft beamforming from internet.and
want to implement the algorithm by using matlab,but
i don't know how to start(ps,i'm also a new user
of matlab).
can anyone give me some sample
souce code, even segments are okay. I'm really
stuck in mud.
thanks in advance.





Manar 
Post subject: Beamformer
Posted: Mon May 09, 2005 5:51 am



Dear
Here
I give you a sample code for creating the filter
coefficients of a Delay and Sum beamformer. if you
have any question you can contact me on my email
palange@hotmail.fr
Have a nice day.
[code]
c = 340; % m/s nfft = 128; % nfft length i_omega
= i*2*pi/c; % f will be variable n_mic = 7;
mics = [ (10*3:10:10*3)' zeros(7,1) ]/100; source
= [0.2 0.63]; % to be measured fs = 22050; %
Sampling Frequency f = (0:nfft1)*fs/nfft; %
Frequency bins W = zeros(n_mic,nfft); d =
zeros(n_mic,1); w = zeros(n_mic,1); r = zeros(n_mic,1);
u = zeros(n_mic,1); bp = zeros(nfft,181);
bps = zeros(1,181); % Filter Coef
for
k = 1:n_mic r(k) = norm( source  mics(k,:));
end
index = 1;
for p=f d = exp(i_omega*p*r)./r;
w=d.*r; w=w/abs(w'*d); W(:,index) = w;
theta_v=[90:1:90]; source_n=norm(source);
for theta = theta_v s=[source_n*sin(theta*pi/180)
source_n*cos(theta*pi/180)]; for k=1:n_mic
u(k) = norm(smics(k,:)); end d=exp(i_omega*p*u)./u;
bps(theta+91)=20*log10(abs(w'*d)); end bp(index,:)=bps;
index = index + 1; end
% here you can
plot the BP as a function of DoA for any frequency.
% Implementing the Beamforming
start
= 1; skiprate = nfft/2; window = triang(nfft)';
num_samples = size(data,2); % data size
num_blocks = ceil((num_samplesnfft)/skiprate);
frame = 1:nfft;
data_frame = zeros(n_mic,nfft);
% frame of data ( from each mic)
data_fft
= zeros(nfft,n_mic); % FFT of the frame
s
= zeros(1,nfft); % frame data (time)
S =
zeros(1,(n_blocks+1)*nfft/2);
for m = 1 :
n_blocks
data_frame = data(:,frame);
data_fft = fft(data_frame');
s = sum(conj(W).*data_fft');
S(frame) = S(frame) + real(ifft(s.*window));
frame = frame + skiprate;
end[\code]


Posted 11/12/2012







Copyright: 1996 
2024 Webmaster:
Kirt Blattenberger,
BSEE  KB3UON 
RF Cafe began life in 1996 as "RF Tools" in an AOL screen name web space totaling
2 MB. Its primary purpose was to provide me with ready access to commonly needed
formulas and reference material while performing my work as an RF system and circuit
design engineer. The World Wide Web (Internet) was largely an unknown entity at
the time and bandwidth was a scarce commodity. Dialup modems blazed along at 14.4 kbps
while typing up your telephone line, and a nice lady's voice announced "You've Got
Mail" when a new message arrived...
All trademarks, copyrights, patents, and other rights of ownership to images
and text used on the RF Cafe website are hereby acknowledged.
My Hobby Website: AirplanesAndRockets.com

