Patent ID: 8446974

Claim:
A tangible non-transitory memory medium storing program instructions, wherein the program instructions, if executed by a processor, cause the processor to: receive samples of a first signal, wherein the first signal is a complex baseband signal resulting from a demodulation of a modulated signal, wherein the modulated signal was modulated according to a quadrature amplitude modulation (QAM) having a K-point constellation, wherein K is an integer greater than one; compute values of a cost function J over a two dimensional (2D) grid that covers a portion of a 2D angle-frequency space, wherein said computing includes computing a cost function value J(θ,ω) for each point (θ,ω) in the 2D grid, wherein, for each point (θ,ω) in the 2D grid, said computing includes: generating samples of a modified signal, wherein the modified signal is related to the first signal by a phase adjustment of angle θ and a frequency adjustment of frequency ω; performing N iterations of the K-means clustering algorithm on the samples of the modified signal to determine a partition of the samples into K clusters and to determine K mean positions corresponding to the K clusters, wherein N is a positive integer; for each of the K clusters, computing a corresponding sum of squared distances over the cluster, wherein the squared distances are relative to the mean position of the cluster; adding the sums to obtain the cost function value J(θ,ω); determine a point (θ e ,ω e ) in the 2D angle-frequency space that minimizes the cost function J; correct the samples of the first signal to obtain samples of a corrected signal, wherein said correcting includes applying a phase adjustment of angle θ e and a frequency adjustment of frequency ω e to the samples of the first signal.