## 4 Simulation
### Simulation Results  
To implement the model in Figure 2, we had to first estimate the GPR target and equalizer and train the RNN. We created the user data \(u[k]\) with 1,440,000 bits, and the probabilities of bits 0 and 1 were identical. \(u[k]\) was modulated into a 2D data page \(a[j,k]\) (1200 \(\times\) 1200 bits). One page was used in estimating the GPR target and equalizer. The signal \(a[j,k]\) was distorted as in (27) and created the signal \(b[j,k]\). The signals \(a[j,k]\) and \(b[j,k]\) were collected and converted into the vectors \(\mathbf{a}\) and \(\mathbf{b}\) in Section 2. Using (3)-(5), we obtained the GPR target \(\mathbf{G}\) and equalizer \(\mathbf{F}\). For the RNN in the first branch, the signals \(a[j,k]\) and \(b[j,k]\) were also collected and used to estimate \(\mathbf{G}_{h2 muy}\). Then, with \(\mathbf{G}_{h2 muy}\), we calculated the signal \(d_{h2 muy}[j,k]\), using \(b[j,k]\) as the input and \(d_{h2 muy}[j,k]\) as the label to train the RNN in Section 3. Similarly, for the RNN in the second branch, \(\mathbf{G}_{v2 muy}\) was estimated from \(a[j,k]\) and \(b[j,k]\). The signal \(d_{v2 muy}[j,k]\) was calculated from \(a[j,k]\) and \(\mathbf{G}_{v2 muy}\). The RNN was trained with the input \(b[j,k]\) and label \(d_{v2 muy}[j,k]\). In addition, to achieve the matrices \(\mathbf{G}_{h2 muy}\) and \(\mathbf{G}_{v2 muy}\), we applied the below conditions. * Conditions of \(\mathbf{G}_{h2 nuy}\): \[\mathbf{C}^{T}= \begin{bmatrix}1&0&0&0&0&0&0&0&0\\ 0&1&0&0&0&0&0&0&0\\ 0&0&1&0&0&0&0&0&0\\ 0&0&0&0&1&0&0&0&0\\ 0&0&0&0&0&0&1&0&0\\ 0&0&0&0&0&0&0&1&0\\ 0&0&0&0&0&0&0&0&1\end{bmatrix} ,\] (31) \[\alpha= \begin{bmatrix}0&0&0&0.85&0&0&0\end{bmatrix} ^{T}.\] (32)
* Conditions of \(\mathbf{G}_{v2 nuy}\): \[\mathbf{C}^{T}= \begin{bmatrix}1&0&0&0&0&0&0&0&0\\ 0&0&1&0&0&0&0&0&0\\ 0&0&0&1&0&0&0&0&0\\ 0&0&0&0&1&0&0&0&0\\ 0&0&0&0&0&1&0&0\\ 0&0&0&0&0&0&1&0&0\\ 0&0&0&0&0&0&0&1\end{bmatrix} ,\] (33) \[\alpha= \begin{bmatrix}0&0&0&0.85&0&0&0\end{bmatrix} ^{T}.\] (34)  
To test our model, we created 10 pages. The signal \(a[j,k]\) was passed through the HDS channel to create the signal \(b[j,k]\). The signal \(b[j,k]\) was supplied to two RNNs and equalizer \(\mathbf{F}\) to create the signals \(z[j,k]\), \(z_{h2 nuy}[j,k]\), and \(z_{v2 nuy}[j,k]\). Then, \(z_{h2 nuy}[j,k]\) and \(z_{v2 nuy}[j,k]\) were handled as in Section 3 to obtain the \(IS[j,k]\) and \(IT[j,k]\). We mitigated \(IT[j,k]\) from \(z[j,k]\) to create \(r_{h}[j,k]\). Similarly, to create \(r_{h}[j,k]\), \(IS[j,k]\) was subtracted from \(z[j,k]\). \(r_{h}[j,k]\) and \(r_{v}[j,k]\) were detected by 1D VA following horizontal and vertical directions to create the signals \(s_{h}[j,k]\) and \(s_{v}[j,k]\), respectively. \(s_{h}[j,k]\) and \(s_{v}[j,k]\) were put through the average function to achieve the signal \(a[j,k]\). \(a[j,k]\) was restored into the original signal \(a[k]\) using demodulation. Subsequently, we counted the error bits (different bits between \(u[k]\) and \(a[k]\)) to calculate the BER performance. We set up a dataset with 60% training and 40% validation data and trained the RNN with 100 epochs. Figures 4 and 5 show the learning curves of the RNNs in the horizontal and vertical detection branches, respectively. Finally, we used the mean square error (MSE) as the loss function, which is calculated as below. * The loss function for the first RNN: \[loss=MSE=\frac{1}{2 MN}\sum_{j=1}^{M}\sum_{k=1}^{N}\left(b[j,k]-d_{h2 nuy}[j,k] \right)^{2},\] (35)
* The loss function for the second RNN: \[loss=MSE=\frac{1}{2 MN}\sum_{j=1}^{M}\sum_{k=1}^{N}\left(b[j,k]-d_{v2 nuy}[j,k] \right)^{2},\] (36) where \(M\) is the number of rows and \(N\) is the number of columns of the data page \(b[j,k]\). In our simulation, \(M=N=1200\). Next, we simulated the proposed model using the testing data. We set up a blur of 1.85 and 0% misalignment. The blur was a parameter of the HDS channel. This represented the energy of the light on the project screen. When the blur increases, the energy of the light is radiated around.