# Implementation of wideband beamformer for planar array

I would like to obtain a good reference (or references) on the implementation of a wideband beamformer for a small planar (rectangular) array comprised of 4 rows by 6 columns, for 24 elements in total. This is a passive acoustic array with air-coupled microphones; the array does not transmit. Each element in the array has the same spacing distance. Given discrete input signals from each element, I would like to compute the beamformer/beamsteering output for a beam at a particular azimuth and elevation. I need to be able to compute multiple beams to electronically steer the array. Is it possible to compute multiple beams all at the same time?

I suppose that I might need to use Fourier-domain techniques involving the FFT. Are these techniques justified for my small array? I've found an IEEE conference paper (http://www.curtistech.co.uk/papers/wideband.pdf or http://dx.doi.org/10.1049/ic:19980121) that may deal with this technique, but how would I apply this to a 2D planar rectangular array? I am interested in the mathematics operating on discrete signals rather than descriptions of the process.

Since this is an acoustic array, the elements are evenly spaced on a 4 rows by 6 columns grid. The spacing between the elements is less than $\lambda/2$, where $\lambda$ is the minimum wavelength of the sound wave. The wavelength range is between 3.31 cm and 331 cm. This is a receiving array. The target area should be in the far field of the array, but I am also wondering if it is possible to resolve signals in the near-field as well.

• Yes, you can compute as many beams on the receive side as you want. Mar 19 '12 at 16:19
• Regarding the rest of your question, it sounds like you want us to provide you code rather than information. We don't generally do that. Mar 19 '12 at 16:20
• @JimClay: NO, I don't want source code. I want a reference that will provide quantitative information on the implementation. As I understand it, the IEEE paper only describes the process without showing hardly any of the mathematics that I can use to write the software. Mar 19 '12 at 20:05
• All that I want here is a reference that doesn't just describe the process, but also provides some mathematics for discrete signals. Mar 19 '12 at 20:17

This Q&A is a bit old, but merits some clarification. To form a beam with an array of elements, you compensate for the phase differences in responses from each one, so that when the compensated element outputs are summed they are in phase. The differences in responses include:

1. Difference in the response of each element in the direction of the formed beam. However, if all elements are identical and placed in the same orientation, the nominal responses are equal.

2. Difference in response of element IN THE ARRAY instead of in isolation. All isolated elements have identical responses (except for real-world variation, see #3). In the array they can be affected by the presence of the other elements; this is called mutual coupling, at least for RF arrays. This can be handled by calibration, or make the spacing wide, or other techniques.

3. Differences in actual vs. nominal responses of the RF hardware. This includes element response due to manufacturing variation, same for cables and RF components. You must calibrate your array and retain the phase differences between elements over all operating frequencies to compensate this.

4. Difference in path length. The incoming wavefront creates a response in each element, but delayed more or less based on the position of the element. This is a TIME DELAY. The amount of time delay can be calculated as the time for the wave to travel the distance between elements, projected along the line-of-sight (LOS). You asked good questions, because compensating for this time delay can be done with phase shifts, IF the signal has a narrow enough bandwidth. If not, this is the "wideband array" case, and time delay must be used to compensate. One response to the question seemed to state that this item tended to drop off as the distance gets large. Untrue. For a source at infinity, you still must account for the different pathlength to each element. The beamforming calculation (time) for element i is Tdi = (di . r) / v where di is a vector from the array phase center to the element i (choose distance units), r is a unit vector in the direction of the source (the direction to form the beam), v is the velocity of the wave in the array medium, and "." is the vector dot product. This dot product gives you the projected distance of the element along the LOS; that distance divided by velocity gives the time delay. Correcting for these time delays causes all element outputs to be synchronized to the phase center. The correction factor, in phase, is Pdi = 360 Tdi / (lambda/v) where lambda is the center frequency wavelength, lambda/v is the time the wave takes to travel a wavelength. So the fraction of this time is multiplied by 360 to give a phase shift. If signal is narrowband, the phases can wrap around.

• The correction factor in phase appears to be important here particularly when working with broadband beamforming. Apr 5 '16 at 21:26

You need the polar response of each individual array element. That is the transfer function of each element as a function of azimuth and elevation (and potentially distance if you want to operate in the near field). For many arrays the polar function will be the same for all elements, but it doesn't hurt to check. To calculate the polar response of the whole array you need to do the following

1. Create a spatial grid on which to calculate the polar response (azimuth and elevation) for the array
2. For each point on the grid calculate distance, azimuth and elevation of this point AS SEEN BY THE INDIVIDUAL ELEMENT. This is in essence a transformation between two different spherical coordinate systems.
3. Look up the single element transfer function for this direction in the single-element polar data. This may require interpolation between measured directions
4. Apply this transfer function to the input signal of this individual element
5. Make sure to properly account for the distances. That's typically done by a factor exp(-j*w*(r-r0)), where r is the distance between grid point and element and r0 and convenient normalization distance. A good choice is the distance at which the single element polar was measured.
6. Some results over all elements
7. Repeat for all points on the target polar grid
• Thanks for your response; the steps are detailed and reasonable. Is the polar response spatial grid co-located with the array grid? For item 2) of the above list, what is the mathematics of "AS SEEN BY THE INDIVIDUAL ELEMENT"? For item 5), how do I "account for the distances"? Is a convolution required with the factor exp(-j*w*(r-r0)), or is something else required here? Mar 19 '12 at 20:41
• think what he means is to account for the geometry of your array by applying phase offsets to each element's output. The propagation distance to your receiver will be slightly different for each element in the array. The differences in propagation distances will result in effective phase shifts on what the receiver observes from each element. In the near field, the phase offsets will be a function of the nominal transmitter-receiver distance. As you get farther away, the array dimensions eventually are dwarfed by the nominal slant range and the phase offsets become essentially constant. Mar 20 '12 at 2:11
• @JasonR: Okay, I think this is starting to make sense; thanks for adding this comment. All that is happening during the process of beamsteering the array is the application of phase shifts. The signal from each element of the array is simply delayed in time, and then summed over the entire array to digitally turn the entire array. The time delay is dependent on the spatial position of the element in the array. My next question is: How do I calculate the phase shift to apply to each element, given that I want to rotate the array to a certain azimuth and elevation? Mar 20 '12 at 4:10
• Moreover, for my little 4 rows by 6 columns array, is it prudent to perform beamforming/beamsteering in the time domain or the frequency domain for wideband signals? Does it really matter? Are the frequency domain techniques more efficient for my application, or do I have to use frequency domain techniques for wideband signals comprised of more than one frequency? Mar 20 '12 at 4:18
• A lot of the details are application specific. In particular: the relative sizes of element spacing, wavelength range and distance of target area to the array. If you can narrow it down, I can potentially simplify the process. Mar 20 '12 at 13:29

Check out Harry Van Tree's Optimal Array Processing. I find it to be one of the best books on the subject.

In the book, he explains the geometry of the planar array, and what the array manifold should look like. From there, you can implement some solutions and see if they are appropriate for the geometry.

A side note: In my personal work, I have found frequency domain implementations (DFT versions) of broadband beamformers to perform much better than their time domain cousins. Frequency domain beamformers appear to be more stable computationally, at the expense of greater end-to-end delay. At least to me, they are also much easier to generalize from the narrowband literature, thereby allowing quicker development time.

• Yes, I agree that frequency-domain methods are more stable and easier to implement. Apr 5 '16 at 21:25

The following books/references seem to provide much of the mathematics associated with narrowband and wideband beamforming, particularly with applications in acoustics, radar, and signal processing.

1) Liu, W., and Weiss, S. 2010. Wideband Beamforming: Concepts and Techniques.

2) Van Trees, H. Detection, Estimation, and Modulation Theory, Part I, II, III

3) Johnson, D., and Dudgeon, D. Array Signal Processing: Concepts and Techniques

4) Brandstein, M. Microphone Arrays: Signal Processing Techniques and Applications

• I've really taken a liking to some of these books, but the answer given above by Hilmar is good as well, and provides a starting point for this type of research. Thanks to all the people who responded to this post! Mar 22 '12 at 1:49