1. A method of demodulating a signal transmitted via a multiple input multiple output (MIMO) communication channel, the method comprising: receiving a data symbol vector comprising a plurality of data symbols that are received at substantially the same time, wherein the received data symbol vector corresponds to a transmitted data symbol vector; generating a plurality of candidate vectors for the transmitted data symbol vector, wherein the plurality of candidate vectors are less than all possible vectors for the transmitted data symbol vector; and selecting one candidate vector from the plurality of candidate vectors using a maximum-likelihood (ML) technique, including selecting a candidate vector from the plurality of candidate vectors that minimizes a distance value corresponding to a Euclidean distance between the received data symbol vector and a channel estimate matrix multiplied with the candidate vector.