## 3 Receiver
### OSIC-MMSE Sorted Detection
By substituting this decomposition into Equation (25), we obtain the following expression:  
\[\mathcal{U}=\mathbf{Q}_{1}\underline{\mathbf{R}}\mathbf{P}^{\mathsf{T}} \mathcal{S}+\mathcal{Z}. \tag{28}\]  
Premultiplying both sides of this equation by \(\mathbf{Q}_{1}^{H}\) elicits the following system of equations:  
\[\mathcal{\tilde{U}}=\underline{\mathbf{R}}\mathcal{\tilde{S}}+\mathbf{Q}_{1}^{ H}\mathcal{Z}, \tag{29}\]  
where \(\mathcal{\tilde{U}}=\mathbf{Q}^{H}\mathcal{U}\), and \(\mathcal{\tilde{S}}=\mathbf{P}^{\mathsf{T}}\mathcal{S}\) is the data vector ordered in decreasing order with respect to its contained energy. The \(\mathcal{Z}\) noise vector maintains its statistics due to the fact that \(\mathbf{Q}_{1}\) is unitary. The OSIC detector was proposed to operate at the sub-block symbol level considering the look-up table with \(N_{C}\) subcarrier and constellation size \(M\). The look-up table has \(2^{b}\) rows (see Table 1). Then, Equation (29) is rewritten as a block system:  
\[\mathcal{\tilde{U}}_{\mathcal{B}}=\underline{\mathbf{R}}_{B}\mathcal{\tilde{ S}}_{\mathcal{B}}+\mathcal{\tilde{Z}}_{\mathcal{B}}, \tag{30}\]where the subscript \(\mathcal{B}=\{0,1,\ldots,N_{t}N_{B}-1\}\) refers to the subsample of the vectors and matrices in the rows and columns corresponding to the sub-block symbol position. The block matrix \(\underline{\mathbf{R}}_{\mathcal{B}}\in\mathbb{C}^{N_{t}\times N_{t}}\) is called a block matrix IM. The \(\mathcal{B}\)-th sub-block of \(\tilde{\mathcal{U}}_{\mathcal{B}}\), \(\tilde{\mathcal{S}}_{\mathcal{B}}\) and \(\tilde{\mathcal{Z}}_{\mathcal{B}}\) for \(\mathcal{B}=\{0,1,\ldots,N_{t}N_{B}-1\}\) is equal to:  
\[\tilde{\mathcal{U}}_{\mathcal{B}} =\big{[} \begin{array}{ccc}\tilde{u}[\mathcal{B}N_{C}]&\tilde{u} [1+\mathcal{B}N_{C}]&\cdots&\tilde{u}[(N_{C}-1)+\mathcal{B}N_{C}]\end{array}  \big{]}^{T},\] \[\tilde{\mathcal{S}}_{\mathcal{B}} =\big{[} \begin{array}{cc}\tilde{s}[\mathcal{B}N_{C}]&\tilde{s} [1+\mathcal{B}N_{C}]&\cdots&\tilde{s}[(N_{C}-1)+\mathcal{B}N_{C}]\end{array}  \big{]}^{T},\] \[\tilde{\mathcal{Z}}_{\mathcal{B}} =\big{[} \begin{array}{cc}\tilde{z}[\mathcal{B}N_{C}]&\tilde{z} [1+\mathcal{B}N_{C}]&\cdots&\tilde{z}[(N_{C}-1)+\mathcal{B}N_{C}]\end{array}  \big{]}^{T}.\]  
Because of the triangular structure of the \(\underline{\mathbf{R}}_{\mathcal{B}}\) matrix, the \(j\)-th element of the \(\tilde{\mathcal{U}}_{\mathcal{B}}\) vector can be expressed individually as:  
\[\tilde{u}_{j}=r_{jj}\tilde{s}_{j}+\sum\limits_{i=j+1}^{N_{C}}r_{ji}\tilde{s}_ {i}+\tilde{z}_{j}. \tag{31}\]  
where \(j=\{0,1,\ldots,N_{C}-1\}\) and \(r_{ab}\) denotes the element of matrix \(\underline{\mathbf{R}}_{\mathcal{B}}\) in the \(a\)-th row and in the \(b\)-th column. The sub-blocks are estimated in regressive sequence using OS detection. This way, the detection of each of the data points can be obtained iteratively using the following expression:  
\[\tilde{s}_{j}=\mathcal{Q}\left\{\frac{\tilde{u}_{j}-\sum\limits_{i=j+1}^{N_{C }}r_{ji}\tilde{u}_{i}}{r_{jj}}\right\}, \tag{32}\]  
where the operator \(\mathcal{Q}\{\cdot\}\) is a decision operator that maps its arguments to the closest point in the constellation \(\Omega_{IM}\) used by the transmitter. A full description of the OSIC detector is shown in Algorithm 2. Assuming that in each iteration the previous decisions are correct, the interference of the previously detected symbols can be subtracted before the current symbol detection is executed.