## 4 Low Complexity Non-Linear Detection
### Sorted QR Decomposition  
QR decomposition is used to obtain the matrices \(\mathbf{Q}\) and \(\mathbf{R}\) from the channel matrix with precoding \(\mathbf{K}\). This decomposition must comply with the following relationship:  
\[\mathbf{K}\mathbf{P}=\mathbf{Q}\mathbf{R}, \tag{30}\]  
where \(\mathbf{Q}\) is an orthonormal matrix that fulfils the property \(\mathbf{Q}^{\mathrm{H}}\mathbf{Q}=\mathbf{I}\), \(\mathbf{R}\) is a superior triangular matrix, and \(\mathbf{P}\) is a permutation matrix whose reordering depends on the signal to interference ratio. This decomposition can be accomplished using different methods; however, for this article, the method based on the Givens unit rotations is used [26]. In each step of the orthonormalization process for determining the \(\mathbf{Q}\) matrix, permutations are taken in the position of the columns in order for the resulting rows in the \(\mathbf{R}\) matrix to be ordered according to their signal to interference ratio. The \(\mathbf{K}\) matrix's quasi-band structure is exploited in order to reduce, as much as possible, the computational complexity in terms of the number of Givens rotations required for the calculation of the QR decomposition.  
To accomplish the mentioned decomposition according to the zero-forcing (ZF) criterion, the following extended matrix is defined:  
\[\underline{\mathbf{K}}=[\mathbf{K}|\mathbf{v}], \tag{31}\]  
to which a sequence of unit rotations is applied. When the minimum mean square error (MMSE) criterion is used, the extended matrix is constructed including the noise statistics as follows:  
\[\underline{\mathbf{K}}=\left[\begin{array}{cc}\mathbf{K}&\mathbf{v}\\ \sigma_{w}^{2}\mathbf{I}&\mathbf{0}\end{array}\right]. \tag{32}\]  
The advantage of using unit rotations in the orthogonalization process to obtain the QR decomposition is that it conserves the original energy of all the elements of the original \(\mathbf{K}\) matrix, maintaining a dynamic range of all the variables used in the process. This characteristic makes it easier to implement this method in devices in real-time using fixed-point arithmetic. To simplify the notation in the successive process of Givens rotations, the following notation:  
\[\mathbf{X}^{(0)}=\underline{\mathbf{K}}, \tag{33}\]  
is defined. Each Givens rotation, described by matrix \(\mathbf{\Theta}_{j}\) which is calculated to cancel a non-zero element of the \(\mathbf{X}^{(j-1)}\) matrix, obtained in the previous iteration. Therefore, the process of generating the upper triangular matrix \(\mathbf{R}\) requires a sequence of Givens rotations to be applied to the expanded matrices (31) and (32) as follows:  
\[\mathbf{X}^{(N_{D})}=\Theta_{N_{D}}\cdots\Theta_{1}\mathbf{X}^{(0)}. \tag{34}\]  
which ultimately yields  
\[\mathbf{X}_{N_{D}}=\left[\begin{array}{cc}\mathbf{R}&\mathbf{Q}^{H}\mathbf{ v}\end{array}\right]=\left[\begin{array}{cc}\mathbf{R}&\widetilde{\mathbf{v}} \end{array}\right], \tag{35}\]  
for the ZF criteria case; for the MMSE criterion the following representation is obtained:  
\[\mathbf{X}_{N_{D}}=\left[\begin{array}{cc}\mathbf{R}&\mathbf{Q}_{1}^{H} \mathbf{v}\\ \mathbf{0}&\mathbf{Q}_{2}^{H}\mathbf{v}\end{array}\right]=\left[\begin{array}[] {cc}\mathbf{R}&\widetilde{\mathbf{v}}\\ \mathbf{0}&\widetilde{\mathbf{v}}_{1}\end{array}\right]. \tag{36}\]The detailed description of the Sorted QR algorithm is described in [27], with the only difference of omitting the rotation when a null element is found in the truncated channel matrix \(\mathbf{K}\).