# Learning Approach for Angle Estimation Based on Characteristics of Phase Drift
## 3 Data Analysis and Model Construction
### Learning Model Description
#### 3.2.2 Model Construction  
Traditional AoA estimation methods, such as MUSIC and ESPRIT, rely on the covariance matrix to determine the signal's AoA. MUSIC estimates AoA by analyzing the eigenvalues of the covariance matrix R, using the pseudo-spectrum function:  
\[P_{MUSIC}(\theta)=\frac{1}{a^{H}(\theta)E_{n}E_{n}^{H}a(\theta)} \tag{1}\]  
where \(E_{n}\) represents the noise subspace and \(a(\theta)\) is the array response vector. ESPRIT, on the other hand, estimates AoA by utilizing the shift invariance property of signal subspaces:  
\[\hat{\theta}=arcsin\bigg{(}\frac{\lambda}{2\pi d}arg(\lambda_{i})\bigg{)} \tag{2}\]  
where \(\lambda_{i}\) is the eigenvalue obtained from the decomposition. These algorithms provide high accuracy but are sensitive to multipath effects and require high SNR conditions. In contrast, this study proposes a deep learning-based model that directly learns AoA from phase drift variations. Unlike MUSIC and ESPRIT, which require explicit covariance matrix computations, our approach leverages time series patterns in phase drift using a GRU-based architecture. This enables robust AoA estimation even in low-SNR environments where traditional methods struggle. The model construction phase aimed to design a framework capable of accurately predicting the angle from the preprocessed phase drift values. As shown in Figure 7, the model's architecture comprised several key components, each tailored to handle the specific requirements of time series data and regression tasks. The input layer was designed to accept sequences of \(N=100\) time steps, each containing the normalized mean and difference values of phase drift values. These input sequences were generated using a sliding window approach, where a fixed-length window moves across the time series data. Given a raw time series signal \(X=[x_{1},\,x_{2},\,\ldots,\,x_{T}]\), the overlapping input sequences are constructed as follows:  
\[S_{t}=[\ x_{t},\ x_{t+1},\ \ldots,\ x_{t+N-1}] \tag{3}\]  
Figure 7: Workflow of time series signal processing and PLAE model architecture for angle estimation. where \(N\) represents the window size (100 time steps in this study), and \(S_{t}\) represents the input sequence starting at time step \(t\). The sliding window ensures that temporal dependencies are preserved while creating structured training samples. To ensure the input values were on a consistent scale, min-max scaling was applied to each feature. The transformation is defined as:  
\[x^{\prime}=\frac{x-x_{min}}{x_{max}\ -x_{min}} \tag{4}\]  
where \(x\) is the original feature value, \(x_{min}\) and \(x_{max}\) are the minimum and maximum values in the training dataset, and \(x^{\prime}\) is the normalized feature. This process ensures that all input values are within the range [0,1], allowing for stable model training. After normalization, the sequential nature of the data was preserved using recurrent layers, which play a crucial role in capturing temporal dependencies. Although CNNs demonstrated strong performance in feature extraction, they are primarily designed for spatial data processing rather than temporal sequence modeling. AoA estimation relies on capturing the temporal dependencies in phase drift values, which CNNs are not inherently suited for. Therefore, we focus on recurrent models such as GRU and LSTM, which are explicitly designed for time series learning. Among recurrent architectures, we compared GRU and LSTM to determine the optimal model for AoA estimation. While LSTM utilizes three gates (forget, input, and output), GRU simplifies this by using only two gates (reset and update), resulting in lower computational complexity and faster inference times. The operation of the GRU can be mathematically described as follows:  
* Update gate (\(z_{t}\)): determines how much of the previous hidden state to carry forward. \[z_{t}=\sigma(W_{z}\cdot[h_{t-1},\ x_{t}]+b_{z})\] (5)
* Reset gate (\(r_{t}\)): decides how much of the previous hidden state should be forgotten.