A communication method comprising: receiving a complex vector, y, corresponding to a transmitted s-sparse codeword, having s non-zero elements, at M receive antennas; processing, the received complex vector and a plurality of candidate received sparse codeword vectors, wherein the processing comprises computing the location of said received vector in a complex space of dimension M and computing the distance between the location of said received complex vector and the location of each candidate received sparse codeword vector in said complex space, wherein the processing of said complex vector codeword comprises: generating matrix data corresponding to a MxN channel estimation matrix, where M corresponds to the number of receive antennas and N corresponds to the number of transmit antennas, the method further comprising: normalizing each of the candidates; computing inner product of the received codeword with each normalized candidate; ranking the inner products by magnitude from largest to smallest; identifying a non-zero position in the transmit codeword as the index of a normalized candidate which yielded the highest ranking inner product; augmenting an estimated basis matrix for y with the column, h, of the channel estimation matrix which yielded the highest ranking inner product; computing a complex value corresponding to the received codeword from which is subtracted the value corresponding to the index of the normalized candidate which yielded the highest ranking inner product in the augmented basis matrix with the identified column h; comparing the complex value with all possible constellation symbols to identify a selected constellation symbol, x. receiving a complex vector, y, corresponding to a transmitted s-sparse codeword, having s non-zero elements, at M receive antennas; processing, the received complex vector and a plurality of candidate received sparse codeword vectors, wherein the processing comprises computing the location of said received vector in a complex space of dimension M and computing the distance between the location of said received complex vector and the location of each candidate received sparse codeword vector in said complex space, wherein the processing of said complex vector codeword comprises: generating matrix data corresponding to a MxN channel estimation matrix, where M corresponds to the number of receive antennas and N corresponds to the number of transmit antennas, the method further comprising: normalizing each of the candidates; computing inner product of the received codeword with each normalized candidate; ranking the inner products by magnitude from largest to smallest; identifying a non-zero position in the transmit codeword as the index of a normalized candidate which yielded the highest ranking inner product; augmenting an estimated basis matrix for y with the column, h, of the channel estimation matrix which yielded the highest ranking inner product; computing a complex value corresponding to the received codeword from which is subtracted the value corresponding to the index of the normalized candidate which yielded the highest ranking inner product in the augmented basis matrix with the identified column h; comparing the complex value with all possible constellation symbols to identify a selected constellation symbol, x. normalizing each of the candidates; computing inner product of the received codeword with each normalized candidate; ranking the inner products by magnitude from largest to smallest; identifying a non-zero position in the transmit codeword as the index of a normalized candidate which yielded the highest ranking inner product; augmenting an estimated basis matrix for y with the column, h, of the channel estimation matrix which yielded the highest ranking inner product; computing a complex value corresponding to the received codeword from which is subtracted the value corresponding to the index of the normalized candidate which yielded the highest ranking inner product in the augmented basis matrix with the identified column h; comparing the complex value with all possible constellation symbols to identify a selected constellation symbol, x.