1. A computer program embodied on a non-transitory computer-readable storage medium, the computer program configured to cause at least one processor to: perform an eigendecomposition of a covariance matrix for a received signal, wherein columns of an eigendecomposition matrix produced by the eigendecomposition are eigenvectors; and for each of the k largest eigenvalues, where k is an integer representing a number of co-channel users and the k co-channel users are ordered from strongest to weakest signal strength, select an eigenvector in the eigendecompositionmatrix having a k th largest eigenvalue as a signal subspace for the k th user, select the remaining eigenvectors in the eigenvector matrix as a noise subspace, and compute a carrier frequency offset based on the noise subspace for the k th user using a MUSIC algorithm.