## 3 The Proposed DoA Estimation Algorithm and Beamforming Scheme
### Beamforming Scheme with Real-Time Steering Vector Updates  
By using the proposed method, the beamforming scheme is also radically different. The traditional only updates steering vector relying on pilots, now most estimations are done without processing traning sequences, and so steering vector updates in real-time. In the beamforming process, the steering vector \(\mathbf{s}(\theta)\) is used to adjust the direction of the main beam toward the target. Furthermore, it is derived directly from the DoA value. Thus, based on the proposed DoA estimation method, we propose a beamforming scheme that is suitable for providing service to UAVs with fast and stable uplink data transmission. First, the relation between the DoA value and the steering vector is introduced. Consider an array of \(L\) omnidirectional elements. When the DoA information is acquired, the steering vector is calculated as,  
\[\mathbf{s}(\theta)=[\exp(j2\pi ft_{d})\,...,\ \exp(j2\pi ft_{d})]^{\mathsf{T}}, \tag{14}\]  
where \(t_{d}\) is the arrival time difference of the transmitted signal between array elements, given by:  
\[t_{d}=\frac{r\cos(\theta)}{c}, \tag{15}\]  
where \(\tau\) is the distance between the array elements and \(c\) is the speed of light. In our proposed beamforming scheme, beamforming is applied based on DoA estimations. This scheme consists of two stages during uplink data transmission. In Stage 1, the processor receives the FSI from the telemetry messages and calculates the DoA and the beamforming weight vector; then, it proceeds to Stage 2. In Stage 2, the processor continues to update the DoA information and the steering vector via the prediction process. When new FSI is obtained, Stage 2 terminates, and the processor returns to Stage 1. Through this process, the steering vector is updated in real-time so that the main beam can be constantly adjusted to track the target UAV, thus providing high gains for the signals of highly-mobile UAVs. The proposed scheme is summarized in Algorithm 1:  
```
Decide the FSI update interval: \(\Delta T\). Then, decide the prediction update interval: \(\tau\). Set \(K_{P}=\frac{\Delta T}{\tau}\). whileuplink data transmission is in progressdo Stage 1 ;  1. Receive the FSI and extract the UAV's position and motion vectors;  2. Perform DoA estimation using Equations (3)-(6), and (8) ;  3. Calculate the steering vector using Equation (14) and then calculate the beamforming weight vector;  4. Set \(k=1\), then go to Stage 2; Stage 2 ; if\(k<K_{P}\)then  1. Perform DoA variation prediction using Equations (9)-(12) and (8) ;  2. Update the steering vector using Equation (14), then update the beamforming weight vector;  3. Set \(k=k+1\); else  Go to Stage 1;  end while
```  
**Algorithm 1**Beamforming Scheme with Real-Time Steering Vector Updates. In our proposed beamforming scheme, beamforming is applied based on DoA estimations. This scheme consists of two stages during uplink data transmission. In Stage 1, the processor receives the FSI from the telemetry messages and calculates the DoA and the beamforming weight vector; then, it proceeds to Stage 2. In Stage 2, the processor continues to update the DoA information and the steering vector via the prediction process. When new FSI is obtained, Stage 2 terminates, and the processor returns to Stage 1. Through this process, the steering vector is updated in real-time so that the main beam can be constantly adjusted to track the target UAV, thus providing high gains for the signals of highly-mobile UAVs. The proposed scheme is summarized in Algorithm 1:  
```
Decide the FSI update interval: \(\Delta T\). Then, decide the prediction update interval: \(\tau\). Set \(K_{P}=\frac{\Delta T}{\tau}\). whileuplink data transmission is in progressdo Stage 1 ;  1. Receive the FSI and extract the UAV's position and motion vectors;  2. Perform DoA estimation using Equations (3)-(6), and (8) ;  3. Calculate the steering vector using Equation (14) and then calculate the beamforming weight vector;  4. Set \(k=1\), then go to Stage 2; Stage 2 ; if\(k<K_{P}\)then  1.