# A Scalable Spatial-Temporal Correlated Non-Stationary Channel Fading Generation Method
## 3 Scalable and Real-Time Hardware Generation Method
### Spatial Correlated Fading Generation Based on Efficient Matrix Operation  
The complex Gaussian fading channel matrix \(\hat{\mathbf{G}}_{u,s}(t)\) can be obtained through the temporal correlated fading generation module, and each element is independent of each other. Based on (8), the correlation channel fading coefficient matrix \(\hat{\mathbf{R}}_{u,s}(t)\) can be further generated; then, the channel correlation matrix \(\hat{\mathbf{H}}_{u,s}(t)\) can be expressed as  
\[vec\big{[}\hat{\mathbf{H}}_{u,s}(t)\big{]}=\hat{\mathbf{R}}_{u,s}(t)^{1/2} \cdot vec\big{[}\hat{\mathbf{G}}_{u,s}(t)\big{]} \tag{28}\]  
where \(u,s=1,2,\ldots,N\), and \(\text{vec}[\cdot]\) represents the vector operator. The lower triangular coefficient matrix \(\hat{L}_{u,s}(t)\) can be obtained by decomposing \(\hat{\mathbf{R}}_{u,s}(t)\) using the Cholesky decomposition, and it satisfies \(\hat{L}_{u,s}(t)=\hat{\mathbf{R}}_{u,s}(t)^{1/2}\). It is essential to develop a lower triangular matrix calculation algorithm to reduce resource consumption, taking the 8x8 MIMO system as an example, the correlation matrix \(\hat{L}_{8,8}\) can be expressed as  
\[\hat{L}_{8,8}= \begin{bmatrix}l_{(2,1)}&&\\ l_{(2,1)}&&l_{(2,2)}&\\ \vdots&\vdots&\ddots&\\ l_{(64,1)}&l_{(64,2)}&\cdots&l_{(64,64)}\end{bmatrix}  \tag{29}\]  
where \(l_{(i,j)}\) denotes the correlation coefficient between sub-channels. The complex Gaussian fading matrix \(\hat{G}_{8,8}\) is represented in vector form as  
\[\text{vec}\big{[}\hat{\mathbf{G}}_{8,8}\big{]}= \begin{bmatrix}g_{1}&g_{2}& \cdots&g_{64}\end{bmatrix} ^{T} \tag{30}\]  
where \(g_{i}\) denotes the independent sub-channel fading. In (29), \(\hat{L}_{8,8}\) is a lower triangular matrix of order 64; it obtains the smallest constituent element of the block matrix in (9) by multiplying and accumulating with \(\text{vec}\big{[}\hat{\mathbf{G}}_{8,8}\big{]}\). Due to the high hardware resource consumption and computational complexity involved in the matrix operation process, it is not conducive to hardware implementation and maintenance. To overcome these challenges, a matrix block approach can be used to partition the lower triangular matrix into smaller blocks. Here, the \(64\times 64\) correlation matrix \(\hat{L}_{8,8}\) is divided into a second-order matrices, \(S_{(m,n)}\) and \(T_{(i,j)}\). This approach simplifies the complex matrix operations into minimal units, thereby reducing the complexity of hardware implementation. Specifically, \(S_{(m,n)}\) and \(T_{(i,i)}\) can be expressed as  
\[T_{(i,i)}= \begin{bmatrix}l_{(i,i)}&&\\ l_{(i+1,i)}&l_{(i+1,i+1)}\end{bmatrix} ,S_{(m,n)}= \begin{bmatrix}l_{(m,n+1)}&l_ {(m,n+2)}\\ l_{(m+1,n+3)}&l_{(m+1,n+4)}\end{bmatrix}  \tag{31}\]  
In (31), the variable \(i,m,n\) interval is 2, where \(i=1,3,5,\ldots,63\), \(m=3,5,\ldots,63\) and \(n=0,2,\ldots,m-3\). Finally, the large-scale lower triangular matrix \(\hat{L}_{8,8}\) can be decomposed into 32 second-order lower triangular matrix \(T_{(i,i)}\) and 496 second-order square matrices \(S_{(m,n)}\). From Equations (29) and (31), the lower triangular matrix \(\hat{L}_{8,8}\) can be expressed as  
\[\hat{L}_{8,8}= \begin{bmatrix}T_{(1,1)}&&\\ S_{(3,0)}&T_{(3,3)}&&\\ \vdots&\vdots&&\ddots&\\ S_{(63,0)}&S_{(63,2)}&\cdots&S_{(63,60)}&T_{(63,63)}\end{bmatrix}  \tag{32}\]decompose \(\text{vec}[\hat{\mathbf{G}}_{8,8}]\) into 32 second-order vectors as follows,  
\[\text{vec}[\hat{\mathbf{G}}_{8,8}]=\left[ \begin{pmatrix}g_{1}&g_{2} \end{pmatrix} _{1}& \begin{pmatrix}g_{3}&g_{4}\end{pmatrix} _{2}&\cdots& \begin{pmatrix} g_{2i-1}&g_{2i}\end{pmatrix} _{i}\right]^{T} \tag{33}\]  
where \(i=1,2,\ldots,32\) and \(\left(\cdot\right)_{i}\) denotes a group of second-order vectors, \(T_{(i,i)}\) and \(S_{(m,n)}\) are the minimum constituent units of \(\hat{L}_{8,8}\), \(\left(g_{2i-1}g_{2i}\right)_{i}\) is the minimum constituent units of \(\text{vec}[\hat{\mathbf{G}}_{8,8}]\). If matrix operations are performed on all the minimum constituent units separately, a lot of multiplication resources will be consumed.