| Author |
Message |
Tobin Fricke
Guest
|
Posted:
Wed Apr 06, 2005 7:21 pm Post subject:
beamforming |
|
|
I am interested in learning how to do beamforming using quadrature
sampling and/or frequency-domain processing.
A few years ago I implemented a small beamformer that operated completely
in the time domain. This was for seismic array processing; the beamformer
combined signals for spatially separated sensors. The 'best beam' was
found by simply trying all wavevectors on a two-dimensional grid,
computing the resulting beam (delay-and-summed) signal, computing the
power of each of these signals, and plotting the resulting signals on the
wavevector grid. Seismologists sometimes call the whole process "slant
stacking". This whole process was repeated over successive windows of the
timeseries.
I understand that there is probably a much better way to do this. I'm
told that I can represent my signals in a "complex baseband"
representation by doing quadrature sampling, making a complex signal with
I and Q components, and then I will be able to perform the "delay"
operation by multiplying by an appropriate phasor. I'm not sure this is
exactly right. Another detail is that I would have to generate the
quadrature signals from the pre-existing time series, maybe by calling the
even-numbered samples "I" and the odd-numbered samples "Q"?
I want to generate the 'picture' of beam power versus wave vector -- is
there a better way to do this other than selecting wave vectors and
computing the resulting beam power, and plotting the results? i.e. I
imagine there might be a way to do this in one powerful step in the
frequency domain. Here's an example of the sort of 'picture' I have in
mind, although it's not the best plot:
http://splorg.org:8080/people/tobin/projects/alaska/work/tap_output.gif
Any hints, references, etc, appreciated.
thanks,
Tobin
http://web.pas.rochester.edu/~tobin/ |
|
| Back to top |
|
 |
Rune Allnor
Guest
|
Posted:
Thu Apr 07, 2005 9:37 am Post subject:
Re: beamforming |
|
|
Tobin Fricke wrote:
| Quote: | I am interested in learning how to do beamforming using quadrature
sampling and/or frequency-domain processing.
A few years ago I implemented a small beamformer that operated
completely
in the time domain. This was for seismic array processing; the
beamformer
combined signals for spatially separated sensors. The 'best beam'
was
found by simply trying all wavevectors on a two-dimensional grid,
computing the resulting beam (delay-and-summed) signal, computing the
power of each of these signals, and plotting the resulting signals on
the
wavevector grid. Seismologists sometimes call the whole process
"slant
stacking". This whole process was repeated over successive windows
of the
timeseries.
|
Yep. You have described the "brute force approach" to beamforming.
| Quote: | I understand that there is probably a much better way to do this.
I'm
told that I can represent my signals in a "complex baseband"
representation by doing quadrature sampling, making a complex signal
with
I and Q components, and then I will be able to perform the "delay"
operation by multiplying by an appropriate phasor. I'm not sure this
is
exactly right.
|
I don't think it's quite that easy. The time delay corresponds to
a phasor for monochromatic (narrow-band) signals. In marine seismics,
signals are usually broadband. With boroad-band data, you would have
to Fourier tranform your time series and apply a phasor to each
frequency bin.
| Quote: | Another detail is that I would have to generate the
quadrature signals from the pre-existing time series, maybe by
calling the
even-numbered samples "I" and the odd-numbered samples "Q"?
|
You would have to apply some sort of Hilbert transform. With seismic
data
that is processed off-line, that's easy. In matlab:
X=fft(x); % x is N x 1 time series
N=length(X);
N2=floor(N/2);
xiq=ifft(X(1:N2),N);
Here, xiq is the quadrature sampled time series. You can check that
eps=max(abs(2*real(xiq)-x))
is a vanishing number.
| Quote: | I want to generate the 'picture' of beam power versus wave vector --
is
there a better way to do this other than selecting wave vectors and
computing the resulting beam power, and plotting the results? i.e. I
imagine there might be a way to do this in one powerful step in the
frequency domain. Here's an example of the sort of 'picture' I have
in
mind, although it's not the best plot:
|
You might be able to achieve this by some sort of Fourier transform.
Note that this requires the sampling parameters, both in time and
space,
to be regular. If they are not, or if you need to watch certain
areas of your plot very closely, the FFT approach might not work.
| Quote: | Any hints, references, etc, appreciated.
|
Rune |
|
| Back to top |
|
 |
dohm
Guest
|
Posted:
Thu Apr 07, 2005 3:28 pm Post subject:
Re: beamforming |
|
|
| Quote: | I am interested in learning how to do beamforming using quadrature
sampling and/or frequency-domain processing.
A few years ago I implemented a small beamformer that operated completel
in the time domain. This was for seismic array processing; th
beamformer
combined signals for spatially separated sensors. The 'best beam' was
found by simply trying all wavevectors on a two-dimensional grid,
computing the resulting beam (delay-and-summed) signal, computing the
power of each of these signals, and plotting the resulting signals on th
wavevector grid. Seismologists sometimes call the whole process "slant
stacking". This whole process was repeated over successive windows o
the
timeseries.
I understand that there is probably a much better way to do this. I'm
told that I can represent my signals in a "complex baseband"
representation by doing quadrature sampling, making a complex signal wit
I and Q components, and then I will be able to perform the "delay"
operation by multiplying by an appropriate phasor. I'm not sure this i
exactly right. Another detail is that I would have to generate the
quadrature signals from the pre-existing time series, maybe by callin
the
even-numbered samples "I" and the odd-numbered samples "Q"?
I want to generate the 'picture' of beam power versus wave vector -- is
there a better way to do this other than selecting wave vectors and
computing the resulting beam power, and plotting the results? i.e. I
imagine there might be a way to do this in one powerful step in the
frequency domain. Here's an example of the sort of 'picture' I have in
mind, although it's not the best plot:
http://splorg.org:8080/people/tobin/projects/alaska/work/tap_output.gif
Any hints, references, etc, appreciated.
thanks,
Tobin
http://web.pas.rochester.edu/~tobin/
|
Depending on how far you want to explore beamforming methods I woul
suggest looking into techniques for sonar and acoustical array processing
Using real array data you can do Bearing-Time Grams (time domain techniqu
using interpolation delay-and-sum), Conventional Beamforming (CBF
Bearing-Frequency Grams (narrowband assumption using FFT), Minimu
Variance Distortionless Response (MVDR) Beamformer Bearing-Frequency Gram
(narrowband assumption), and Adaptive Beamforming, etc. There are man
other variations and techniques but this covers the basics. Let me kno
if you are interested in anything specific and I can share some matla
code to get you started.
What really gets interesting is dealing with wide-band signal
(acoustical, etc.) Although you can make a narrowband assumption and ge
some work done, it becomes difficult when dealing with multiple source
and poor SNR. The following introductory paper and book may be o
interest to you also:
"Beamforming: A Versatile Approach to Spatial Filtering", Van Veen an
Buckley, IEEE ASSP Magazine April 1988
"Statistical and Adaptive Signal Processing", Manolakis, Ingle, Kogon
P.S. Make sure you use the errata with the Manolakis book. It has som
good stuff on beamforming but it is full of mathematical errors.
I hope this helps. Have fun!
Dave Ohm
Research Engineer
Vexcel Corporation
This message was sent using the Comp.DSP web interface o
www.DSPRelated.com |
|
| Back to top |
|
 |
David Kirkland
Guest
|
Posted:
Sat Apr 09, 2005 1:34 pm Post subject:
Re: beamforming |
|
|
Tobin Fricke wrote:
| Quote: | I am interested in learning how to do beamforming using quadrature
sampling and/or frequency-domain processing.
A few years ago I implemented a small beamformer that operated
completely in the time domain. This was for seismic array processing;
the beamformer combined signals for spatially separated sensors. The
'best beam' was found by simply trying all wavevectors on a
two-dimensional grid, computing the resulting beam (delay-and-summed)
signal, computing the power of each of these signals, and plotting the
resulting signals on the wavevector grid. Seismologists sometimes call
the whole process "slant stacking". This whole process was repeated
over successive windows of the timeseries.
I understand that there is probably a much better way to do this. I'm
told that I can represent my signals in a "complex baseband"
representation by doing quadrature sampling, making a complex signal
with I and Q components, and then I will be able to perform the "delay"
operation by multiplying by an appropriate phasor. I'm not sure this is
exactly right. Another detail is that I would have to generate the
quadrature signals from the pre-existing time series, maybe by calling
the even-numbered samples "I" and the odd-numbered samples "Q"?
I want to generate the 'picture' of beam power versus wave vector -- is
there a better way to do this other than selecting wave vectors and
computing the resulting beam power, and plotting the results? i.e. I
imagine there might be a way to do this in one powerful step in the
frequency domain. Here's an example of the sort of 'picture' I have in
mind, although it's not the best plot:
http://splorg.org:8080/people/tobin/projects/alaska/work/tap_output.gif
Any hints, references, etc, appreciated.
thanks,
Tobin
http://web.pas.rochester.edu/~tobin/
|
By beamforming at one frequency you're basically doing NB beamforming.
How you perform on BB signals will depend on the array geometry, and
frequencies you are using.
Another alternative is to time domain beamform on the I & Q signals.
This is exactly the same as before except you must also compensate with
an (complex) exponential multiply for the phase shift for the original
carrier frequency.
Cheers,
David |
|
| Back to top |
|
 |
Tobin Fricke
Guest
|
Posted:
Sat Apr 16, 2005 6:30 am Post subject:
Re: beamforming |
|
|
| Quote: | Another alternative is to time domain beamform on the I & Q signals.
This is exactly the same as before except you must also compensate with
an (complex) exponential multiply for the phase shift for the original
carrier frequency.
|
Is there an advantage to doing this, if I don't already have the I & Q
signals?
Tobin |
|
| Back to top |
|
 |
See
Joined: 24 Apr 2006
Posts: 1
|
Posted:
Mon Apr 24, 2006 8:25 am Post subject:
Beamforming simulation with different number of transducers |
|
|
Hi,
I am looking for a matlab code to do the above.
I have write the beamforming simulation matlab script below. However i don't know if it is correct. You may help to check for me.
clc
f = 45e3;
N = 4;
c = 340; %Speed of sound in air
lamda = c/f;
d = lamda/2;
%delay=9e-6;
%i=1/sin((c*delay)/d);
theta = linspace (-pi/2, pi/2, 1000); %Range
x1 = (N*d*pi*f)/c;
x2= (d*pi*f)/c;
P = ((sin(x1*sin(theta)))/(N*sin(x2*sin(theta))));
%P = P*N/max(P);
%polar(,p*cos((pi/2)-theta),'-r');
%xlabel('\theta')
%ylabel('P(\theta)')
%figure(2)
polar(P.*cos((pi/2)-theta), P.*sin((pi/2)-theta),'-r')
%polar(theta,P,'-g')
%title (sprintf('Frequency = %d, No.of Transducer = %d, Distance = %d',f,N,d));
%axis([-4 4 0 4])
I would like to know if the following equation is correct for beamforming simulation?
Q(theta) = [sin{(N*pi*d/lamda)*(sin(theta)-sin(theta0)}/ N*sin{(pi*d/lamda))*(sin(theta)-sin(theta0)]
whereby (theta0=sin^-1(c*delay/d), lamda=c/f, d=lamda/2)
Please advise. Thanks.
email:alf21@starhub.net.sg |
|
| Back to top |
|
 |
|
|
|
|