Spectral correlation in CSP means that distinct narrowband spectral components of a signal are correlated-they contain either identical information or some degree of redundant information.

Spectral correlation is perhaps the most widely used characterization of the cyclostationarity property. The main reason is that the computational efficiency of the FFT can be harnessed to characterize the cyclostationarity of a given signal or data set in an efficient manner. And not just efficient, but with a reasonable total computational cost, so that one doesn’t have to wait too long for the result.

Just as the normal power spectrum is actually the power spectral density, or more accurately, the spectral density of time-averaged power (or simply the variance when the mean is zero), the spectral correlation function is the spectral density of time-averaged correlation (covariance). What does this mean? Consider the following schematic showing two narrowband spectral components of an arbitrary signal:

Let’s define narrowband spectral component to mean the output of a bandpass filter applied to a signal, where the bandwidth of the filter is much smaller than the bandwidth of the signal.

The sequence of shaded rectangles on the left are meant to imply a time series corresponding to the output of a bandpass filter centered at with bandwidth Similarly, the sequence of shaded rectangles on the right imply a time series corresponding to the output of a bandpass filter centered at with bandwidth

Let’s look at a specific example of the cyclic autocorrelation function: the textbook rectangular-pulse BPSK signal with IID symbols.

The cyclic autocorrelation function (CAF) for rectangular-pulse BPSK can be derived as a relatively simple closed-form expression (see My Papers [6] for example or The Literature [R1]). It can be estimated in a variety of ways, which we will discuss in future posts. The non-conjugate cycle frequencies for the signal are harmonics of the bit rate, , and the conjugate cycle frequencies are the non-conjugate cycle frequencies offset by the doubled carrier, or .

Recall that our simulated rectangular-pulse BPSK signal has samples per bit, or a bit rate of , and a carrier offset of , all in normalized units (meaning the sampling rate is unity). We’ve previously selected a sampling rate of MHz to provide a little physical realism; let’s do that here too. This choice means the bit rate is kHz and the carrier offset frequency is kHz. From these numbers, we see that the non-conjugate cycle frequencies are kHz, and that the conjugate cycle frequencies are kHz, or kHz.

We’ll use this simple textbook signal throughout the CSP Blog to illustrate and tie together all the different aspects of CSP.

To test the correctness of various CSP estimators, we need a sampled signal with known cyclostationary parameters. Additionally, the signal should be easy to create and understand. A good candidate for this kind of signal is the binary phase-shift keyed (BPSK) signal with rectangular pulse function.

PSK signals with rectangular pulse functions have infinite bandwidth because the signal bandwidth is determined by the Fourier transform of the pulse, which is a sinc() function for the rectangular pulse. So the rectangular pulse is not terribly practical–infinite bandwidth is bad for other users of the spectrum. However, it is easy to generate, and its statistical properties are known.

So let’s jump in. The baseband BPSK signal is simply a sequence of binary ( 1) symbols convolved with the rectangular pulse. The MATLAB script make_rect_bpsk.m does this and produces the following plot:

The signal alternates between amplitudes of +1 and -1 randomly. After frequency shifting and adding white Gaussian noise, we obtain the power spectrum estimate:

The power spectrum plot shows why the rectangular-pulse BPSK signal is not popular in practice. The range of frequencies for which the signal possesses non-zero average power is infinite, so it will interfere with signals “nearby” in frequency. However, it is a good signal for us to use as a test input in all of our CSP algorithms and estimators.

The MATLAB script that creates the BPSK signal and the plots above is here. It is an m-file but I’ve stored it in a .doc file due to WordPress limitations I can’t yet get around.

The purpose of this blog is to talk about cyclostationary signals and cyclostationary signal processing (CSP). I’ve been working in the area for nearly thirty years, and over that time I’ve received a lot of requests for help with CSP code and algorithms. I thought it was time to put some of the basics out on the web so everybody could benefit. And I’m hoping to learn from you too.

What is cyclostationarity? It is a property of a class of mathematical models for a large number of signals in the world, most notably man-made modulated radio-frequency signals, like those used by cell phones, broadcast AM/FM/TV, satellites, WiFi modems, and many more systems. The mathematical models can be quite accurate, so we also say that cyclostationarity is a property of the real-world signals themselves.

The key aspect of the model is that cyclostationary signals have probabilistic parameters that vary periodically with time. Traditionally, signals are treated as stationary, which means their parameters do not vary with time. What are these ‘probabilistic parameters?’ Quantities like the mean value, the variance, and higher-order moments. These quantities are defined for both the time-domain signal and for its frequency-domain representation. So we have ‘temporal moments‘ and ‘spectral moments.’ The second-order spectral moment is also called the spectral correlation function (SCF). The SCF is central to many CSP algorithms; a display of the SCF is shown above for a simple bandlimited binary phase-shift keyed (BPSK) signal.

The most common difficulty I’ve encountered is when a researcher is developing a CSP estimator and is having trouble applying it to their data set. The researchers almost always skip the step of first applying the estimator to a signal with a perfectly known cyclostationary parameters. So, in the next post I’ll describe how to make the simplest digital CS signal, which has known temporal and spectral moments of all orders, so that we can test CSP estimators by comparing their output to the known correct result.

I encourage readers to point out my errors in the comments of my posts and toĀ suggest topics they would like to see covered in future posts. Also, let me know about your application and interests so I can continue to learn too.

I hope you enjoy your time here at the CSP Blog!

Support the CSP Blog and Keep it Ad-Free

Please consider donating to the CSP Blog to keep it ad-free and to support the addition of major new features. The small box below is used to specify the number of $5 donations.