# Blind Spoofing GNSS Constellation Detection Using a Multi-Antenna Snapshot Receiver +
## 2 Snapshot Receivers and Beamforming
### Spatial Acquisition Techniques  
Combining all spatial channels coherently results in improved acquisition performance [25]. This is also referred to as beamforming or array processing [28]. It can be done before or after correlation [29; 30], referred to as pre- and post-correlation beamforming. Typically, pre-correlation beamforming is preferred, as this is more processing efficient than post-correlation beamforming since fewer correlation operations are required. An array steering vector is used to combine the data from each of the channels. The function of the array steering vector is to correct the amplitude and phase offsets from each channel, such that signals are aligned and can be coherently combined. An array steering vector \(\mathbf{b}_{i}\) is a column vector of size \(N_{e}\times 1\). Pre-correlation beamforming can be described as:  
\[y_{i,j}^{\text{pre}}(\tau,f_{\text{D}})=\left(\mathbf{b}_{i}^{T}\times\mathbf{ x}(t)\right)\star r_{j}(t-\tau,f_{\text{D}})\,, \tag{6}\]  
and post-correlation beamforming as:  
\[y_{i,j}^{\text{post}}(\tau,f_{\text{D}})=\mathbf{b}_{i}^{T}\times\left(\mathbf{ x}(t)\star r_{j}(t-\tau,f_{\text{D}})\right)\,, \tag{7}\]  
As both these correlation processes and the matrix multiplications are linear, these operations are per definition associative. Therefore, the outputs of both functions are mathematically equal. The disadvantage of coherent spatial integration is that the array steering vector \(\mathbf{b}_{i}\) should be known. This can either be estimated or be determined theoretically if sufficient a-priori information is available. An alternative approach is incoherent spatial integration. This follows a similar approach to incoherent temporal integration, but instead of exploiting the periodicity of the signal, it exploits the temporal similarities between the antenna channels. Once again, the correlation functions have peaks at the same locations; however, with different phases. Incoherent spatial integration for \(y_{j}^{\text{inco}}(\tau,f_{\text{D}})\) can be described as:  
\[y_{j}^{\text{inco}}(\tau,f_{\text{D}})=\sum_{i=1}^{N_{\text{e}}}\left\|x_{i}( t)\star r_{j}(t-\tau,f_{\text{D}})\right\|\,. \tag{8}\]  
Using spatial incoherent acquisition does not suppress interferences or other signals. Further, it also has a squaring loss. Hence, it is less effective against noise in comparison to coherent beamforming. However, it allows the correlation peak to be found more reliable than only using a single channel. Once the corrected code phase \(\tau\) and Doppler offset \(f_{\text{D}}\) is found, the array steering vector can be determined. Let the correlation output vector \(\mathbf{y}_{i}(\tau,f_{\text{D}})\) for each channel be defined as:  
\[\mathbf{y}_{i}(\tau,f_{\text{D}})=\mathbf{x}(t)\star r_{i}\left(t-\tau,f_{ \text{D}}\right)\,. \tag{9}\]If the code phase \(\tau\) and Doppler offset \(f_{\rm D}\) are correctly estimated, it can be shown to be equal to:  
\[\mathbf{y}_{i}(\tau,f_{\rm D})=\mathbf{a}_{i}\circ\boldsymbol{\alpha}_{i}\cdot R _{i,i}(0)+\mathbf{n}_{\rm c}\,, \tag{10}\]  
where \(\circ\) is the Hadamard product, and \(\mathbf{n}_{\rm c}\) is the noise vector after correlation. From these values the array steering vector can be simply estimated:  
\[\mathbf{b}_{i}=\left(\mathbf{y}_{i}(\tau,f_{\rm D})\right)^{\circ-1}\,, \tag{11}\]  
where \((\cdot)^{\circ-1}\) is the Hadamard inverse (i.e., an element wise inverse). Note that in this case the array steering vector also contains the corrections to the receiver phase and amplitude errors (\(\boldsymbol{\alpha}_{i}\)). Hence, these do not need to be estimated separately. More sophisticated methods to determine the array steering vector can also be implemented [31; 32; 33; 34]. Lastly, if incoherent temporal integration was used, like with Equation (5), then the average phase and magnitude offsets relative to the first element is done.