What is a Cyclostationary Signal?
This article discusses what a cyclostationary signal is, how it differs from stationary and non-stationary signals, with real examples and Python code to visualize the difference.
In many real-world RF systems, signals are not purely random. Instead, they exhibit hidden periodic properties that can be exploited for detection and analysis. These signals are known as cyclostationary signals, and they play a crucial role in modern signal intelligence (SIGINT) and RF sensing systems.
Signal Statistics
When we talk about the statistics of a signal, there are properties like its mean and variance computed over time. These can either be constant, change randomly, or change in a predictable, periodic way. That distinction is what separates stationary, non-stationary, and cyclostationary signals.
Stationary signals
A signal is wide-sense stationary (WSS) if its mean is constant and its autocorrelation depends only on the time lag , not on the absolute time ,
is the mean of the signal, denotes the expected value (statistical average), and is the signal at time . According to the equation, the average value of the signal is the same no matter “at which time ” you compute it.
is the autocorrelation function, is the time lag between two samples, and is the complex conjugate of . This equation states that the similarity between two samples of the signal depends only on how far apart they are in time (), not on the absolute time at which you measure them.
In plain terms: it does not matter when you look at a stationary signal. The statistics are the same.
Example: Additive White Gaussian noise (AWGN)
Thermal noise is a classic example. Its mean is zero and its variance is constant at all times. There is no periodicity in its statistics.
Figure 1: AWGN noise in the time domain, its mean and local variance.
Non-stationary signals
A signal is non-stationary if its statistics change over time in a way that is not periodic. The change can be a step, or a slow drift.
Example: chirp signal with amplitude ramp
A linear chirp whose amplitude increases over time is non-stationary. Its local variance grows monotonically, there is no repeating pattern to it.
Figure 2: Chirp signal in the time domain, its local variance.
Cyclostationary signals
A signal is cyclostationary if its statistical properties repeat periodically over time with some period .
Mathematically, a signal is cyclostationary if its autocorrelation function satisfies,
The autocorrelation is periodic in with period . This periodicity is with respect to the absolute time , not the lag . For a fixed , the autocorrelation value varies periodically as the observation time changes, if you measure it now and again seconds later, you get the same value. This is different from a stationary signal, where has no dependence on at all, and different from a non-stationary signal, where changes without repeating.
The period is determined by the physical mechanism that generates the signal, the symbol clock, the carrier period, or the pulse repetition interval.
Example: Modulated Signals
A perfect example for cyclostationary signals are modulated signals. For example, in BPSK, the transmitted signal can be represented as a carrier multiplied by a sequence of symbols (±1) that change at fixed intervals defined by the symbol rate. Although the data symbols themselves are random, the symbol timing is periodic, and the carrier is also inherently periodic. This combination creates a signal whose mean may be zero, but whose autocorrelation and higher-order statistics vary periodically with time, particularly at the symbol period and carrier frequency. As a result, the signal exhibits cyclostationarity, since its statistical behavior repeats in a structured, time-dependent manner, distinguishing it from purely random noise.
Mathematically BPSK signal is represented as,
The symbols are random, but the pulse repeats every seconds by construction. This embeds a period into the second-order statistics of the signal, regardless of the randomness of the data.
The periodic property of a cyclostationary signal is not reflected in the mean or variance of the signal in a simple way. For BPSK, the mean remains approximately zero due to the symmetric nature of the symbols, and the overall variance appears nearly constant when averaged over time. However, these first-order statistics do not capture the underlying periodic behavior introduced by the carrier and symbol timing. Instead, this structure becomes evident in the autocorrelation function, where the similarity between the signal and its time-shifted version varies periodically with the absolute time . This periodic variation arises because the signal contains repeating patterns at the symbol period , making the autocorrelation a more suitable tool to reveal the cyclostationary nature of the signal.
Cyclostationarity is better understood through the concept of the autocorrelation function, which measures how similar a signal is to a time-shifted version of itself. For cyclostationary signals like BPSK, this autocorrelation is not constant, instead, it varies periodically with time and exhibits repetition with respect to the symbol period.
To fully capture this behavior, we use the Cyclic Autocorrelation Function (CAF), which introduces an additional frequency parameter known as the cyclic frequency. This allows us to observe how the signal’s statistical properties vary periodically.
An even more powerful representation is the Spectral Correlation Function (SCF), which transforms the cyclic autocorrelation into the frequency domain. The SCF reveals correlation between different frequency components of the signal and exposes periodic structures that are not visible in standard spectral analysis.
In BPSK signals, these representations show distinct peaks at the symbol rate and carrier frequency, confirming the presence of cyclostationary behavior.
SCF of a BPSK signal
The SCF is computed in two steps. First, the CAF is evaluated at a specific cycle frequency :
where,
- is the received signal at sample
- is the lag — how far apart the two samples are
- is the cycle frequency being tested — the periodicity you are looking for
- is a complex tone that extracts only the component of the autocorrelation oscillating at frequency
- is the total number of samples used in the estimate
For each value of , this gives one complex number. Sweeping across a range gives you the CAF as a function of lag. Please note that I am using the one-sided estimator; compared to the symmetric definition, it introduces a phase term that does not affect the magnitude of the result.
The second step is to take the Fourier transform of the CAF with respect to , which moves it into the frequency domain and gives the SCF,
where,
- is the SCF value at spectral frequency and cycle frequency
- is the spectral frequency — where in the frequency spectrum the correlation appears
- The sum over is the Fourier transform of the CAF, converting lag into frequency
The result is a 2D function of two variables: spectral frequency and cycle frequency . A large value of at a particular pair means the signal has strong cyclic correlation at that combination.
To understand what the SCF reveals, consider the BPSK signal used here. The signal parameters are: sample rate Hz, carrier frequency Hz, and symbol rate symbols per second, giving a symbol period seconds and 200 samples per symbol.
The SCF is computed at two different cycle frequencies and compared directly.
Figure 3: SCF of BPSK at the correct and incorrect cycle frequency.
At Hz (blue curve): two sharp peaks appear at Hz, which are exactly . This is the cyclostationary fingerprint of the signal. The peaks appear at the carrier frequency because the cyclic structure imposed at the symbol rate is shifted to by the carrier modulation.
At Hz (red curve): the output is near zero across all frequencies. The signal has no cyclic structure at this , so the CAF is near zero for all lags, and the FFT of near-zero values gives near-zero output. The small residual you see is estimation noise from the finite signal length, not a real cyclic feature.
This comparison is the core demonstration of what the SCF does. It is selective in : it responds strongly only at cycle frequencies that are physically present in the signal. For BPSK, the non-zero cycle frequencies are harmonics of the symbol rate and frequencies related to the carrier . In theory, the SCF is zero at other cycle frequencies , but in practice small residual values appear due to finite data length and noise.
This selectivity is what makes the SCF useful in SIGINT. A conventional power spectrum cannot distinguish between two signals overlapping in frequency. The SCF can, because different modulation types have different sets of non-zero cycle frequencies, their cyclostationary fingerprints do not overlap even when their spectra do.
The jupyter notebook used for plotting the figures in this article is attached below,