# Discrete-time beamforming

Beamforming is a signal processing technique used to spatially select propagating waves (most notably acoustic and electromagnetic waves). In order to implement beamforming on digital hardware the received signals need to be discretized. This introduces quantization error, perturbing the array pattern. For this reason, the sample rate must be generally much greater than the Nyquist rate.

## Introduction

Beamforming aims to solve the problem of filtering signals coming from a certain direction as opposed to an omni-directional approach. Discrete-time beamforming is primarily of interest in the fields of seismology, acoustics, sonar and low frequency wireless communications. Antennas regularly make use of beamforming but it is mostly contained within the analog domain.
Beamforming begins with an array of sensors to detect a 4-D signal (3 physical dimensions and time). A 4-D signal $s(\mathbf {x} ,t)$ exists in the spatial domain at position $\mathbf {x}$ and at time $t$. The 4-D Fourier transform of the signal yields $S(\mathbf {k} ,\omega )$ which exists in the wavenumber-frequency spectrum. The wavenumber vector $\mathbf {k}$ represents the 3-D spatial frequency and $\omega$ represents the temporal frequency. The 4-D sinusoid $e^{j(\omega t-\mathbf {k} '\mathbf {x} )}$, where $\mathbf {k} '$ denotes the transpose of the vector $\mathbf {k}$, can be rewritten as $e^{j\omega (t-{\boldsymbol {\alpha }}'\mathbf {x} )}$ where ${\boldsymbol {\alpha }}={\frac {\mathbf {k} }{\omega }}$ , also known as the slowness vector.
Steering the beam in a particular direction requires that all the sensors add in phase to the particular direction of interest. In order for each sensor to add in phase, each sensor will have a respective delay $\tau$ such that ${\boldsymbol {\tau _{i}}}=-{\boldsymbol {\alpha _{o}}}'\mathbf {x_{i}}$ is the delay of the ith sensor at position $\mathbf {x_{i}}$ and where the direction of the slowness vector ${\boldsymbol {\alpha _{o}}}$ is the direction of interest.

### Discrete-time weighted delay-and-sum beamforming

Source:
The discrete-time beamformer output $bf(nT)$ is formed by sampling the receiver signal $r_{i}(t)$ and averaging its weighted and delayed versions.
$bf(nT)={\frac {1}{N}}\sum _{i=0}^{N-1}w_{i}r_{i}(nT-n_{i}T)$
where:
* $N$ is the number of sensors
* $w_{i}$ are the weights
* $T$ is the sampling period
* $n_{i}T$ is the steering delay for the ith sensor
Setting $n_{i}T$ equal to $-{\boldsymbol {\alpha _{o}}}'\mathbf {x_{i}}$ would achieve the proper direction but $n_{i}$ must be an integer. In most cases $n_{i}$ will need to be quantized and errors will be introduced. The quantization errors can be described as $\Delta \tau _{i}=n_{i}T-\tau _{i}$. The array pattern for a desired direction given by the slowness vector $\alpha _{o}$ and for a quantization error $\Delta \tau _{i}$ becomes:
$H(\mathbf {k} ,\omega )={\frac {1}{N}}\sum _{i=0}^{N-1}w_{i}e^{-j(\mathbf {k} -\omega {\boldsymbol {\alpha _{0}}})'\mathbf {x_{i}} }e^{-j\omega \Delta \tau _{i}}$

### Interpolation

Source:
The fundamental problem of discrete weighted delay-and-sum beamforming is quantization of the steering delay. The interpolation method aims to solve this problem by upsampling the receiving signal. $n_{i}$ must still be an integer but it now has a finer control. Interpolation comes at the cost of more computation. The new sample rate is denoted as ${\tilde {T}}$. The beamformer output $bf(n{\tilde {T}})$ is now
$bf(n{\tilde {T}})={\frac {1}{N}}\sum _{i=0}^{N-1}w_{i}{\tilde {r}}_{i}(n{\tilde {T}}-n_{i}{\tilde {T}})$
The sampling period ratio $I={\frac {T}{\tilde {T}}}$ is set to an integer to minimize the increase in computations. The samples ${\tilde {r}}_{i}(m{\tilde {T}})$ are interpolated from $r_{i}(nT)$ such that
${\tilde {r}}_{i}(m{\tilde {T}})=\sum _{n}r_{i}(nT)g((m-nI){\tilde {T}})$
After $bf(n{\tilde {T}})$ is upsampled and filtered, the beamformer output $bf(m{\tilde {T}})$ becomes:
$bf(m{\tilde {T}})={\frac {1}{N}}\sum _{i=0}^{N-1}w_{i}\sum _{p}r_{i}(pT)g((m-pI-n_{i}){\tilde {T}})$
At this point the beamformer's sample rate is greater than the highest frequency it contains.

## Frequency-domain beamforming

Source:
As seen in the discrete-time domain beamforming section, the weighted delay-and-sum method is effective and compact. Unfortunately quantization errors can perturb the array pattern enough to cause complications. The interpolation technique reduces the array pattern perturbations at the cost of a higher sampling rate and more computations on digital hardware. Frequency-domain beamforming does not require a higher sampling rate which makes the method more computationally efficient.
The discrete-time frequency-domain beamformer is given by
$fd(nT,\omega )={\frac {1}{N}}\sum _{i=0}^{N-1}w_{i}R_{i}(nT,\omega )e^{j\omega (n-{\boldsymbol {\tau }}_{i})}$
For linearly spaced sensor arrays ${\boldsymbol {\tau }}_{i}=-{\frac {Mq}{Nl}}i$. The discrete short-time Fourier transform of $r_{i}(nT)$ is denoted by $R_{i}(nT,\omega )$. In order to be computationally efficient it is desirable to evaluate the sum in as few calculations as possible. For simplicity $T=1$ moving forward. An effective method exists by considering a 1-D FFT for many values of $\omega$. If $\omega ={\frac {2\pi l}{M}}$ for $0\leq l<M$ then $R_{i}(n,\omega )e^{j\omega (n-{\boldsymbol {\tau }}_{i})}$ becomes:
$R_{i}\left(n,{\frac {2\pi l}{M}}\right)e^{j{\frac {2\pi l}{M}}n}=\sum _{p=0}^{M-1}r_{i}(n-p)v(p)e^{j{\frac {2\pi l}{M}}p}$
where $p=n-m$. Substituting the 1-D FFT into the frequency-domain beamformer:
$fd\left(n,{\frac {2\pi l}{M}}\right)=\left[{\frac {1}{N}}\sum _{i=0}^{N-1}w_{i}R_{i}\left(n,{\frac {2\pi l}{M}}e^{j{\frac {2\pi q}{N}}i}\right)\right]e^{j{\frac {2\pi l}{M}}n}$
The term in brackets is the 2-D DFT with the opposite sign in the exponential
$fd\left(n,{\frac {2\pi l}{M}}\right)={\frac {1}{N}}\sum _{i=0}^{N-1}\sum _{p=0}^{M-1}w_{i}v(p)r_{i}(n-p)e^{j{\frac {2\pi l}{M}}p+j{\frac {2\pi q}{N}}i}$
if the 2-D sequence $x_{n}(p,i)=w_{i}v(p)r_{i}(n-p)$ and $X_{n}(l,q)$ is the (M X N)-point DFT of $x_{n}(p,i)$ then
$fd\left(n,{\frac {2\pi l}{M}}\right)={\frac {1}{N}}X_{n}(M-l,N-q)$
For a 1-D linear array along the horizontal direction and a desired direction:
$\alpha _{0x}={\frac {Mq}{NlD}}$
where:
* $M$ and $N$ are dimensions of the DFT
* $D$ is the sensor separation
* $l$ is the frequency index between $0$ and $M-1$
* $q$ is the steering index between $0$ and $N-1$
$l$ and $q$ can be selected to "steer the beam" towards a certain temporal frequency and spatial position