Reply by Tobin Fricke April 16, 20052005-04-16
On Sat, 9 Apr 2005, David Kirkland wrote:

> 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
Reply by David Kirkland April 9, 20052005-04-09
Tobin Fricke wrote:
> 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
Reply by dohm April 7, 20052005-04-07
>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/ > >
Depending on how far you want to explore beamforming methods I would suggest looking into techniques for sonar and acoustical array processing. Using real array data you can do Bearing-Time Grams (time domain technique using interpolation delay-and-sum), Conventional Beamforming (CBF) Bearing-Frequency Grams (narrowband assumption using FFT), Minimum Variance Distortionless Response (MVDR) Beamformer Bearing-Frequency Grams (narrowband assumption), and Adaptive Beamforming, etc. There are many other variations and techniques but this covers the basics. Let me know if you are interested in anything specific and I can share some matlab code to get you started. What really gets interesting is dealing with wide-band signals (acoustical, etc.) Although you can make a narrowband assumption and get some work done, it becomes difficult when dealing with multiple sources and poor SNR. The following introductory paper and book may be of interest to you also: "Beamforming: A Versatile Approach to Spatial Filtering", Van Veen and 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 some 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 on www.DSPRelated.com
Reply by Rune Allnor April 7, 20052005-04-07
Tobin Fricke wrote:
> 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.
> 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.
> 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.
> 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.
> Any hints, references, etc, appreciated.
Rune
Reply by Fred Marshall April 6, 20052005-04-06
"Tobin Fricke" <fricke@ocf.berkeley.edu> wrote in message 
news:Pine.SOL.4.62.0504061211410.28681@apocalypse.OCF.Berkeley.EDU...
>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 >
Tobin, I think of them as two distinct things. Among other things, I and Q processing is useful if the center frequency is high and the bandwidth is relatively low or a lower percentage of the center frequency. There are other reasons but I think this is what you meant. Rick Lyon's book addresses the sampling method you describe. Frequency domain beamforming might be useful if you're going to do beamforming and spectrum analysis anyway. It may be particularly useful if you only have access to data samples from array elements and no pre-formed (analog) beams. From http://www.ece.utexas.edu/~allen/EE381K-15280-F98/continuous.html Frequency-Domain Beamforming Beamforming can also be performed in the frequency domain, where delaying the signal ri(t) by ti is implemented by multiplying Ri(w) by the phasor exp(-jwti). However, we do not have access to the entire spectrum Ri(w). Instead, we transform a segment of ri(t) by applying a finite extent window and computing the short-time Fourier transform Ri(t,w), an approximation to Ri(w). Now the frequency-domain beamformer output is: Note that the frequency-domain beamformer is inherently narrowband. The exp(-jwti) term performs the time delay, and the exp(jwt) term extracts the component of the beamformer output b(t) at the frequency w. An approximation to b(t) could be formed by integrating fd(t,w) over frequency. ............................................... Either way, you end up with a map of frequency, angle data which would have to be searched for maxima, etc. But maybe there's an efficient way to do that. Rune probably knows all about this. Fred begin 666 freqDomain.gif M1TE&.#EAG0$Z`/<``/______S/__F?__9O__,___`/_,___,S/_,F?_,9O_, M,__,`/^9__^9S/^9F?^99O^9,_^9`/]F__]FS/]FF?]F9O]F,_]F`/\S__\S MS/\SF?\S9O\S,_\S`/\`__\`S/\`F?\`9O\`,_\``,S__\S_S,S_F<S_9LS_ M,\S_`,S,_\S,S,S,F<S,9LS,,\S,`,R9_\R9S,R9F<R99LR9,\R9`,QF_\QF MS,QFF<QF9LQF,\QF`,PS_\PSS,PSF<PS9LPS,\PS`,P`_\P`S,P`F<P`9LP` M,\P``)G__YG_S)G_F9G_9IG_,YG_`)G,_YG,S)G,F9G,9IG,,YG,`)F9_YF9 MS)F9F9F99IF9,YF9`)EF_YEFS)EFF9EF9IEF,YEF`)DS_YDSS)DSF9DS9IDS M,YDS`)D`_YD`S)D`F9D`9ID`,YD``&;__V;_S&;_F6;_9F;_,V;_`&;,_V;, MS&;,F6;,9F;,,V;,`&:9_V:9S&:9F6:99F:9,V:9`&9F_V9FS&9FF69F9F9F M,V9F`&8S_V8SS&8SF68S9F8S,V8S`&8`_V8`S&8`F68`9F8`,V8``#/__S/_ MS#/_F3/_9C/_,S/_`#/,_S/,S#/,F3/,9C/,,S/,`#.9_S.9S#.9F3.99C.9 M,S.9`#-F_S-FS#-FF3-F9C-F,S-F`#,S_S,SS#,SF3,S9C,S,S,S`#,`_S,` MS#,`F3,`9C,`,S,```#__P#_S #_F0#_9@#_,P#_``#,_P#,S #,F0#,9@#, M,P#,``"9_P"9S "9F0"99@"9,P"9``!F_P!FS !FF0!F9@!F,P!F```S_P`S MS `SF0`S9@`S,P`S````_P``S ``F0``9@``,P`````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M`````````````````````"'Y! `"````+ ````"=`3H`0 C_``$('$BPH,&# M"!,J7,BPH4.!_R(:C$C1H<2'&#-JW,BQH\>/($.*'$FRI$F0_PA63/GPXLF7 M,&/*G$FSILV;+RGJW,G3)<Z?0(,*':K1YT*C`%@61$I2J5">1%4Z73HU856F M(ZOBQ%KSJM:87[E"]'K0)5>Q8Z<:K4AU*-NL+./&;2M5ZM>D3K&BQ:NV+]FQ M%N\R-7L7H<^W@.TFGIBW)U3&?0U'EKEW8.&6ETLZWJR39F6%@S-##/EYX][2 MBU&*ADN7<=370=>NADV[MNW;N&&CMFHYM^_?P(,+SXEW*<;=PY,K7\X\JE;4 MR)M+G_Z[,^C9U*];-YR]>U?LWJ^7__T[6G+#M]L1][;*67W'[1QE3Q0__KQY MANCS/V]=/NUZ_JGM)IM2Z1UV7U&*6>0:?0`69UE8HB%V&%+1J989> GZAQ^$ M%SX7X809/D@5@7DU2&%C&0U8UX,H+O@1>@R*&-Y6&$I6XWDWRCCCB.X5!5]S M%>[H68ZI.2CDD4@FN9Q[V 6IY)-01@F6CDT2*>656&:9(F3'6:GEEV"&*>:8 M9)9)8X\LFJEFEK/I-=])3I*V$W= G8BA6CEYJ9ISQGW''GMS0I82B#RB::)@ M>K[XHX]L!<K7GP="RN*B]36HHUV-=>:H@XL*"*&+*TYJJ':.27III:&&>E:' MF68*:FQQ7O\JX5$]=1FIC9B&N!AG;7WJHJ<APM>HKXJV.9FI1>Z*Z(;':ICJ M3:.^-]>C'7*YX:WC-?MH:TSV&1JJP*;Y[+#8FE::?#;V..=:@)*8;:MT0MO> M8_&]F6&M@FZK4KJGI@5O6?Q.*JJ[E(;+8Z[V'NS1NH.A.M.%**V9;(J%7>9E MHC&F6QG&^P[Y'Z:Q2NQCOR*7;#*0<:)[\LHL#Q<KGBW'+'-NZ@86\LPXYPP7 MNYCI[///=09H*]!$%PU3BU4:K?32I/7J+[U&,BWUU/:]2BO56&==:,*DWJSU MUV"'+3;5F^8[]ME90VTUVFS;JY>A'/-&E-H=R\NK:0_K5G:Y+P;_+2A:YY)7 MMTE>Q[>W6\1>VR><<8_\U%7R\DWRK1XVOOCCE-:Y+'[6'HWX4YUK)K>ES\I* MZ-H.KUVXM-$JWF_%FV<\<>J64I@JST^3V"*.)V;\K;EW8PNXA[_&'J.PQ#L7 MLLK]T=YZU*4[C+STH%Z4.)7@,3_][,L'3OKKR4,?_8@(.SNY3<\'5K[%N^,H MN;C^ZFKD9ZN"F[VK`HO[MIS&?I_L[^(['_R*Q"3+V8QPT[(>@%0DO>ME:X&] MFYUQ]E<\BNF*@10L%NF8Y[P(-L]_I^*@!.=5H6CE2$(;JUS54 ?!VNGN<DD9 MX/_:Y[YQ-<N!P/M8ZH87J4"=93T>G%8`G5=7PZL9#F9<6Q42N0=$\@@1@ .S MH5]L:$%N]4>$5UP8@3XXP[RU1"0&;!<)TZ>H,G(--& \6K6&UK3(P5" K.%< MQ,XTQLQIQDH9'-W"*+/&GL718SH$8=L89\8GW:Q1U"&BR9872 N=D(R#5*,B MT_;&2%JR3'C4UB4W":;0E*J%G QE)S,I2%&:<D>>Q!>WPGC*5M+&CEUBI2O# $%! `.P`` ` end
Reply by Tobin Fricke April 6, 20052005-04-06
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/