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 (variance), 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:

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 call the first time-series and the second one Since these time-series, or signals, are bandpass in general, if we attempt to measure their correlation we will get a small value if However, if we downconvert each of them to baseband (zero frequency), we will obtain lowpass signals, and there is the possibility that these new signals are correlated to some degree.

As a limiting case, suppose each of the signals were noiseless sine waves. By the construction of the figure, their frequencies must be different if and so their correlation will be zero. However, if each sine wave is perfectly downconverted to baseband, the resulting signals are simply complex-valued constants, and the correlation between the two constant time-series is high.

In general, the narrowband time-series and are not simple sine waves, but complicated random processes. But the correlation between separated spectral components–** spectral correlation**–is still a highly useful characterization of the signal for a large class of interesting signals.

The spectral components (the individual downconverted narrowband spectral components of the signal) are most often obtained through the use of the Fourier transform. As the transform of length slides along the signal , it produces a number of downconverted spectral components with approximate bandwidth The two involved time-series of interest are then renamed as and A measure of the spectral correlation is given by the limiting average of the *cyclic periodogram*, which is defined by

as the amount of processed data increases without bound, and then the spectral resolution () is allowed to decrease to zero,

The *limit spectral correlation function* we just wrote down is a time-smoothed (time-averaged) cyclic periodogram. But the limit function can also be obtained by frequency smoothing the cyclic periodogram

where is a unit-area pulse-like smoothing kernel (such as a rectangle). In (3), the symbol denotes convolution.

**The Significance of the Frequency A**

The spectral correlation function (SCF) is typically zero for almost all real numbers Those for which the SCF is **not** identically zero are called ** cycle frequencies** (CFs). The set of SCF CFs is exactly the same as the set of cycle frequencies for the cyclic autocorrelation function (CAF)! That is, the separation between correlated narrowband signal components of is the same as a frequency of a sine wave that can be generated by a quadratic nonlinearity (for example, a squarer or a delay-and-multiply device) operating on the original time-series data

**The Cyclic Wiener Relationship**

It can be shown that the Fourier transform of the CAF is equal to the SCF (The Literature [R1], My Papers [5,6]):

which is called the cyclic Wiener relationship. The Wiener relationship (sometimes called the Wiener-Khintchine theorem) is a name given to the familiar Fourier transform relation between the conventional power spectral density and the autocorrelation

where is the conventional power spectrum and is the conventional autocorrelation function.

**Conjugate Spectral Correlation**

This post has defined the **non-conjugate** spectral correlation function, which is the correlation between and . (The correlation between random variables and is defined as that is, **the standard correlation includes a conjugation**.)

The *conjugate SCF* is defined as the Fourier transform of the conjugate cyclic autocorrelation function,

From this definition, it can be shown that the conjugate SCF is the density of time-averaged correlation between and

where is the *conjugate cyclic periodogram*

The detailed explanation for why we need two kinds of spectral correlation functions (and, correspondingly, two kinds of cyclic autocorrelation functions) can be found in the post on conjugation configurations.

### Illustrations

The SCF below is estimated (more on that estimation in another post) from a simulated BPSK signal having bit rate of kHz and carrier frequency of kHz. A small amount of noise is added to the signal prior to SCF estimation. The (non-conjugate) SCF shows the power spectrum for and the bit-rate SCF for kHz. The conjugate SCF plot shows the prominent feature for the doubled-carrier cycle frequency kHz, and features offset from the doubled-carrier feature by kHz. More on the spectral correlation of the BPSK signal can be found here and here. The spectral correlation surfaces for a variety of communication signals can be found in this gallery post.

A closely related function called the spectral coherence function is useful for blindly detecting cycle frequencies exhibited by arbitrary data sets.

Now consider a similar signal: QPSK with rectangular pulses. Let’s switch to normalized frequencies here for convenience. The signal has a symbol rate of , a carrier frequency of unit power, and a small amount of additive white Gaussian noise. A power spectrum estimate is shown in the following figure:

Consider also four distinct narrowband (NB) components of this QPSK signal as shown in the figure. The center frequencies are and We know that this signal has non-conjugate cycle frequencies that are equal to harmonics of the symbol rate, or for . This means that the NB components with separations are correlated. So if we extract such NB components “by hand” and calculate their correlation coefficients as a function of relative delay, we should see large results for the pairs and and small results for all other pairs drawn from the four frequencies.

So let’s do that. We apply a simple Fourier-based ideal filter (ideal meaning rectangular pass band) with center frequency frequency shift to complex baseband (zero center frequency), and decimate. The results are our narrowband signal components. Are they correlated when they should be and uncorrelated when they should be?

Here are the correlation-coefficient results:

Here the signals arise from the frequencies So the spectral correlation concept is verified here: the only large correlation coefficients are those corresponding to a spectral component difference that is equal to a cycle frequency. One can also simply plot the decimated shifted narrowband components and assess correlation visually:

### Estimators

I’ve written several posts on estimators for the spectral correlation function; they are listed below. I think of them as falling into two categories: exhaustive and focused. For exhaustive spectral correlation estimators, the goal is to estimate the function over its entire (non-redundant) domain of definition as efficiently as possible. For focused estimators, the goal is to estimate the spectral correlation function for one or a small number of cycle frequencies with high accuracy and selectable frequency resolution.

#### Exhaustive Estimators

Strip Spectral Correlation Analyzer (SSCA)

#### Focused Estimators

The Frequency-Smoothing Method (FSM)

The Time-Smoothing Method (TSM)

Dear sir,

May I ask a question, could you upload the matlab code which generate the full size of normalized SCF ? I am a beginner level right now, it’s very hard for me to learn this just simply looking at those equations. I saw someone post a function called “autofam”. that function is really close to what I need (full size, and frequency are all normalized), but that is not normalized (the max SCF > 1) SCF. Thanks a lot in advance.

Sunson211:

Thanks for reading the CSP blog and for your comment. I don’t give out much code (some signal generation code and some machine-learning code has been posted). The general rules I follow for providing help are laid out here.

Hi Chad, thanks for your reply. Sure, allow me to ask questions here if possible. But do you know how to attach some pictures here? It’s much easier if I can put some pictures. Thank you.

I’ve been working on it, but I don’t think it can be done at this time. You can take a look at the post that you want to comment on again, and see if there are new options for uploading an attachment. If not, you might do what some others have done and post your images to another site, such as imgur.com, and then paste a link to them in a comment to the CSP Blog.

And yes, you cannot create a post on the CSP Blog, you may only comment.

Btw, Chad. It seems that I only allow to give reply, but I cannot make a new post?

Sorry, I didn’t include the link of autofam.

https://github.com/sayguh/MastersProject/blob/master/matlab/sandbox/autofam.m Thank you.

Dear friends,

I have a general question about SCF. It is well known that SCF is very good for signal classification. So, my question is that, between original SCF, and normalized SCF, which one is better for classification purpose in practical ? Thank you.

I favor the coherence for detection of significant cycle frequencies and spectral correlation (and cyclic cumulants) for modulation recognition (signal-type classification).

got it! thank you!

Dear Chad Spooner,

I’ve just found your blog after decided to dive into the cyclo stationary process world. I think I will spend long hours reading through your posts. I would like to thank you very much for your contributions.

I would like to ask my first question if you don’t mind. What is the meaning of taking the FFT from the autocorrelation of an arbitrary signal vector (like MATLAB randn generated vector)? Is this similar to consider autocorrelation function with an alpha = 0?

Best Regards.

Thanks for visiting the CSP Blog Claudio!

Do you mean “taking the FFT

ofthe autocorrelation”? The Fourier transform of the traditional autocorrelation function is the power spectrum. But maybe by “autocorrelation function” you mean the time-varying autocorrelation function. In that case, the Fourier transform of the time-varying autocorrelation where the transform is over the time variable , and not the lag variable , will reveal the different cyclic autocorrelation components.Under the interpretation above, where “autocorrelation function” means “time-varying autocorrelation function”, if you take the FFT of the time-varying autocorrelation function and look at the FFT bin corresponding to zero frequency, you will have the normal stationary-signal autocorrelation value, which is also the cyclic autocorrelation function for .

I could help more if the question were made more precise. Do you think you can rephrase it?

Hi Chad Spooner,

Thanks for your feedback. You have made very clear statments and, from that, I noticed that I am missing critical fundamental concepts. I will think more, rephrase my questions, and get back soon.

Claudio:

Perhaps you should look at the time-domain posts:

The Cyclic Autocorrelation

Cyclic Cumulants

Estimating Temporal Moments and Cumulants