This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


(To be removed) Estimate frequency offset for PSK signal

comm.PSKCoarseFrequencyEstimator will be removed in a future release. Use comm.CoarseFrequencyCompensator instead.


The PSKCoarseFrequencyEstimator System object™ estimates frequency offset for a PSK signal.

To estimate frequency offset for a PSK signal:

  1. Define and set up your PSK coarse frequency estimator object. See Construction.

  2. Call step to estimate frequency offset for a PSK signal according to the properties of comm.PSKCoarseFrequencyEstimator. The behavior of step is specific to each object in the toolbox.


Starting in R2016b, instead of using the step method to perform the operation defined by the System object, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.


H = comm.PSKCoarseFrequencyEstimator creates a PSK coarse frequency offset estimator object, H. This object uses an open-loop technique to estimate the carrier frequency offset in a received PSK signal.

H = comm.PSKCoarseFrequencyEstimator(Name,Value) creates a PSK coarse frequency offset estimator object, H, with the specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).



Modulation order the object uses

Specify the modulation order of the PSK signal as a positive, real scalar of data type double. This value must be a positive power of 2. The default is 4.


Estimation algorithm to object uses

Specify the estimation algorithm as one of FFT-based or Correlation-based. The default is FFT-based.


Desired frequency resolution (Hz)

Specify the desired frequency resolution for offset frequency estimation as a positive, real scalar of data type double. This property establishes the FFT length used to perform spectral analysis, and must be less than or equal to half the SampleRate property. This property applies only if the Algorithm property is FFT-based. The default is 0.001.


Maximum measurable frequency offset (Hz)

Specify the maximum measurable frequency offset as a positive, real scalar of data type double. The default is 0.05.

The value of this property must be less than SampleRate/ ModulationOrder. It is recommended that MaximumOffset be less than or equal to SampleRate/(4*ModulationOrder). This property is active only if the Algorithm property is Correlation-based.


Sample rate (Hz)

Specify the sample rate in samples per second as a positive, real scalar of data type double. The default is 1.


reset(To be removed) Reset states of the PSKCoarseFrequencyEstimator object
step(To be removed) Estimate frequency offset for PSK signal
Common to All System Objects

Allow System object property value changes


expand all

Estimate and correct for a -250 Hz frequency offset in a QPSK signal using the PSK Coarse Frequency Estimator System object?.

Create a square root raised cosine transmit filter System object.

txfilter = comm.RaisedCosineTransmitFilter;

Create a phase frequency offset object, where the FrequencyOffset property is set to -250 Hz and SampleRate is set to 4000 Hz using name-value pairs.

pfo = comm.PhaseFrequencyOffset(...
    'FrequencyOffset',-250, ...

Create a PSK coarse frequency estimator System object with a sample rate of 4 kHz and a frequency resolution of 1 Hz.

frequencyEst = comm.PSKCoarseFrequencyEstimator(...
    'SampleRate',4000, ...

Create a second phase frequency offset object to correct the offset. Set the FrequencyOffsetSource property to Input port so that the frequency correction estimate is an input argument.

pfoCorrect = comm.PhaseFrequencyOffset(...
    'FrequencyOffsetSource','Input port', ...

Generate a QPSK signal, filter the signal, apply the frequency offset, and pass the signal through the AWGN channel.

modData = pskmod(randi([0 3],4096,1),4,pi/4);     % Generate QPSK signal
txFiltData = txfilter(modData);                   % Apply Tx filter
offsetData = pfo(txFiltData);                     % Apply frequency offset
noisyData = awgn(offsetData,25);                  % Pass through AWGN channel

Estimate the frequency offset by using frequencyEst. Observe that the estimate is close to the -250 Hz target.

estFreqOffset = frequencyEst(noisyData)
estFreqOffset =


Correct for the frequency offset using pfoCorrect and the inverse of the estimated frequency offset.

compensatedData = pfoCorrect(noisyData,-estFreqOffset);

Create a spectrum analyzer object to view the frequency response of the signals.

spectrum = dsp.SpectrumAnalyzer('SampleRate',4000, 'ShowLegend',true, ...
    'ChannelNames',{'Received Signal' 'Compensated Signal'});

Plot the frequency response of the received signal, which is shifted 250 Hz to the left, and of the compensated signal using the spectrum analyzer. The compensated signal is now properly centered.

spectrum([noisyData compensatedData]);

Compatibility Considerations

comm.PSKCoarseFrequencyEstimator will be removed

comm.PSKCoarseFrequencyEstimator will be removed. Use comm.CoarseFrequencyCompensator instead.

Selected Bibliography

[1] Luise, M. and R. Regiannini. “Carrier recovery in all-digital modems for burst-mode transmissions”, IEEE® Transactions on Communications, Vol. 43, No. 2, 3, 4, Feb/Mar/April, 1995, pp. 1169–1178.

Introduced in R2013b