1. A method for processing a plurality of data streams from a transmitter, the method including: (a) receiving symbols via the plurality of data streams, the received symbols being represented by a received symbol vector y; (b) generating an N×N channel matrix H, using a signal model y=Hx+n, where x is the N×1 transmitted symbols and n is the N×1 Gaussian noise vector, and where N is the number of data streams; (c) sorting the N×N channel matrix H to provide an N×N sorted channel matrix H(S); (d) performing QR decomposition on the sorted channel matrix H(S) to compute a Q(S) matrix and an R(S) matrix such that H(S)=Q(S)R(S), the Q(S) matrix being a unitary matrix and the R(S) matrix being an upper triangular matrix; (e) performing QR decomposition on a column-row-swapped-sorted-channel matrix H ({tilde over (S)}) to compute the corresponding Q({tilde over (S)}) matrix and R({tilde over (S)}) matrix such that H({tilde over (S)})=Q({tilde over (S)})×R({tilde over (S)}), the Q({tilde over (S)}) matrix being a unitary matrix and the R({tilde over (S)}) matrix being an upper triangular matrix; (f) performing QR equalization on a sorted received symbol vector y(S), which is produced by sorting the receiving symbol vector y to provide a equalized-sorted vector z(S); (g) performing QR equalization on a swapped received symbol vector y({tilde over (S)}) to provide a equalized-swapped-sorted vector z({tilde over (S)}); (h) processing a first portion of z(S) and z({tilde over (S)}) via a QR-maximum likelihood detection (MLD) demodulation scheme to determine soft bits and soft symbols; (I) processing a second portion of z(S) and z({tilde over (S)}) via a QR-maximum likelihood detection (MLD) demodulation scheme to determine soft bits and soft symbols; (j) rearrange soft bits in steps (h) and (I) to provide an output vector b.