A communication system, comprising: a receiver including an antenna to receive a signal including one or combination of symbols transmitted by multiple transmitters (101 to 107) over wireless channels connecting the transmitters (101 to 107) with the communication system, wherein the signal is encoded, such that each symbol is encoded with a spreading code selected from a set of spreading codes, and wherein the duration of the received signal is at least the duration of the spreading code; characterised in further comprising a filter to produce a filtered signal , wherein the filter includes a set of correlators (311 to 313, 600, 630) to produce a set of filtered symbols (315 to 317) and a combiner to combine the filtered symbols (315 to 317) to produce the filtered signal , wherein each correlator (311 to 313, 600, 630) includes coefficients to process the received signal to produce a filtered symbol, wherein a number of correlators (311 to 313, 600, 630) in the set of correlators (311 to 313, 600, 630) is less than a number of the spreading codes in the set of spreading codes; a processor to determine a minimum mean squared error (MMSE) matrix based on the set of spreading codes and a variance of noise in the channels; project the MMSE matrix to a low-dimensional space to produce a low-dimensional MMSE matrix; update the set of coefficients of set of correlators (311 to 313, 600, 630) with the elements of the low-dimensional MMSE matrix; and update elements of a dictionary matrix based on the elements of the low-dimensional MMSE matrix; and a detector to detect the symbols transmitted by the transmitters (101 to 107) from the filtered signal using a sparse recovery with the dictionary matrix. a receiver including an antenna to receive a signal including one or combination of symbols transmitted by multiple transmitters (101 to 107) over wireless channels connecting the transmitters (101 to 107) with the communication system, wherein the signal is encoded, such that each symbol is encoded with a spreading code selected from a set of spreading codes, and wherein the duration of the received signal is at least the duration of the spreading code; characterised in further comprising a filter to produce a filtered signal , wherein the filter includes a set of correlators (311 to 313, 600, 630) to produce a set of filtered symbols (315 to 317) and a combiner to combine the filtered symbols (315 to 317) to produce the filtered signal , wherein each correlator (311 to 313, 600, 630) includes coefficients to process the received signal to produce a filtered symbol, wherein a number of correlators (311 to 313, 600, 630) in the set of correlators (311 to 313, 600, 630) is less than a number of the spreading codes in the set of spreading codes; a processor to determine a minimum mean squared error (MMSE) matrix based on the set of spreading codes and a variance of noise in the channels; project the MMSE matrix to a low-dimensional space to produce a low-dimensional MMSE matrix; update the set of coefficients of set of correlators (311 to 313, 600, 630) with the elements of the low-dimensional MMSE matrix; and update elements of a dictionary matrix based on the elements of the low-dimensional MMSE matrix; and a detector to detect the symbols transmitted by the transmitters (101 to 107) from the filtered signal using a sparse recovery with the dictionary matrix. <EOS>