Creating a Simple CS Signal: Rectangular-Pulse BPSK

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 (\pm 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.

Welcome to the CSP Blog!


Thank you for visiting the CSP blog.

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.


In future posts, I’ll be showing how to create simple cyclostationary signals, write code for basic CSP estimators and detectors, and discuss papers in the literature.

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 well-known noise- and interference-tolerance properties of CSP algorithms follow from the periodically time-varying nature of the signals’ parameters.

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.

Click on the images of a gear and menu to find lists of posts as well as other pages on this blog.

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.