Main Content

Coarse Frequency Compensator

Compensate for carrier frequency offset in PAM, PSK, or QAM

  • Coarse Frequency Compensator block

Communications Toolbox / RF Impairments Correction
Communications Toolbox / Synchronization


The Coarse Frequency Compensator block compensates for carrier frequency offset in QAM, 8-PSK, BPSK, OQPSK, PAM, and QPSK modulation schemes.


expand all

Compensate for a frequency offset imposed on a noisy 8-PSK channel by using the Coarse Frequency Compensator block.

The doc_coarsefreqcomp model compares a frequency offset impaired signal to one that has coarse frequency compensation applied.

A spectrum analyzer plot shows the transmitted signal before and after applying coarse frequency compensation.

Estimated frequency offset is 1999.9694824.2 Hz.



expand all

Input signal, specified as a column vector.

Data Types: single | double
Complex Number Support: Yes


expand all

Compensated output signal, returned as a complex column vector with the same dimensions and data type as the input In.

Data Types: single | double

Estimate of the frequency offset, returned as a scalar.


To add this port, select Estimated frequency offset output port.

Data Types: single | double


expand all

To edit block parameters interactively, use the Property Inspector. From the Simulink® Toolstrip, on the Simulation tab, in the Prepare gallery, select Property Inspector.

Modulation type, specified as QAM, 8PSK, BPSK, OQPSK, PAM, or QPSK.

Specify the frequency offset estimation algorithm as FFT-based or Correlation-based.

The table shows the allowable combinations of the modulation type and the estimation algorithm.

ModulationFFT-Based AlgorithmCorrelation-Based Algorithm

For more information, see Algorithms.


This parameter appears when you set Modulation type of input signal to 8PSK, BPSK, PAM, or QPSK.

Frequency resolution in Hz, specified as a positive real scalar.


This parameter applies when you set Estimation algorithm to FFT-based.

Number of samples per symbol, specified as an even integer scalar greater than or equal to 4.


This parameter appears when you set Modulation type of input signal to OQPSK.

Maximum measurable frequency offset in Hz, specified as a positive scalar.


This parameter appears when you set Estimation algorithm to Correlation-based.

Select this check box to add the FreqEst output port. The FreqEst port outputs the estimated frequency offset in Hz.

Type of simulation to run, specified as Code generation or Interpreted execution.

  • Code generation — Simulate the model by using generated C code. The first time you run a simulation, Simulink generates C code for the block. The model reuses the C code for subsequent simulations unless the model changes. This option requires additional startup time, but the speed of the subsequent simulations is faster than with the Interpreted execution option.

  • Interpreted execution — Simulate the model by using the MATLAB® interpreter. This option shortens startup time, but the speed of subsequent simulations is slower than with the Code generation option. In this mode, you can debug the source code of the block.

For more information, see Simulation Modes (Simulink).

Block Characteristics

Data Types

double | single

Multidimensional Signals


Variable-Size Signals



expand all


[1] Luise, M., and R. Reggiannini. “Carrier Frequency Recovery in All-Digital Modems for Burst-Mode Transmissions.” IEEE® Transactions on Communications, Vol. 43, No. 2/3/4, Feb. 1995, pp. 1169–1178.

[2] Wang, Y., et al. “Non-Data-Aided Feedforward Carrier Frequency Offset Estimators for QAM Constellations: A Nonlinear Least-Squares Approach.” EURASIP Journal on Advances in Signal Processing, Vol. 2004, No. 13, Dec. 2004, p. 856139.

[3] Nakagawa, Tadao, et al. “Non-Data-Aided Wide-Range Frequency Offset Estimator for QAM Optical Coherent Receivers.” Optical Fiber Communication Conference/National Fiber Optic Engineers Conference 2011, OSA, 2011, paper OMJ1.

[4] Olds, Jonathan. Designing an OQPSK demodulator.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

Version History

Introduced in R2015b

expand all