•−•  ••−•    −•−•  •−  ••−•  •
RF Cafe Morse Code >Hear It<

Job Board

About RF Cafe™

Sitemap

fft beamforming - RF Cafe Forums

Because of the high maintenance needed to monitor and filter spammers from the RF Cafe Forums, I decided that it would be best to just archive the pages to make all the good information posted in the past available for review. It is unfortunate that the scumbags of the world ruin an otherwise useful venue for people wanting to exchanged useful ideas and views. It seems that the more formal social media like Facebook pretty much dominate this kind of venue anymore anyway, so if you would like to post something on RF Cafe's Facebook page, please do.

Below are all of the forum threads, including all the responses to the original posts.


 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.


 
  
 
 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:nfft-1)*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(s-mics(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_samples-nfft)/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
Custom Search
More than 10,000 searchable pages indexed.

Your RF Cafe
Progenitor & Webmaster

Click here to read about RF CafeKirt Blattenberger... single-handedly redefining what an engineering website should be.

View the YouTube RF Cafe Intro Video Carpe Diem!
(Seize the Day!)

5th MOB: My USAF radar shop

Airplanes and Rockets: My personal hobby website

Equine Kingdom: My daughter Sally's horse riding website