dsp.CrossSpectrumEstimator System object

Package: dsp

Estimate cross-spectral density

Description

The dsp.CrossSpectrumEstimator computes the cross- spectrum density of a signal, using the Welch algorithm and the Periodogram method.

To implement the cross-spectrum estimation object:

  1. Define and set up your cross-spectrum estimator object. See Construction.

  2. Call step to implement the estimator according to the properties of dsp.CrossSpectrumEstimator. The behavior of step is specific to each object in the toolbox.

Construction

H = dsp.CrossSpectrumEstimator returns a System object™, H, that computes the cross-power spectrum of real or complex signals using the periodogram method and Welch's averaged, modified periodogram method.

H = dsp.CrossSpectrumEstimator('PropertyName', PropertyValue,...) returns a Cross-Spectrum Estimator System object, H, with each specified property name set to the specified value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).

Properties

SampleRate

Sample rate of input

Specify the sample rate of the input, in hertz, as a finite numeric scalar. The default value is 1 Hz. The sample rate is the rate at which the signal is sampled in time.

SpectralAverages

Number of spectral averages

Specify the number of spectral averages as a positive, integer scalar. The Cross-Spectrum Estimator computes the current cross-spectral estimate by averaging the last N estimates. N is the number of spectral averages defined in the SpectralAverages property. The default is 8.

FFTLengthSource

Source of the FFT length value

Specify the source of the FFT length value as one of 'Auto' | 'Property'. The default is 'Auto'. If you set this property to 'Auto', the Cross-Spectrum Estimator sets the FFT length to the input frame size. If you set this property to 'Property', then you specify the number of FFT points using the FFTLength property.

FFTLength

FFT Length

Specify the length of the FFT that the Cross-Spectrum Estimator uses to compute cross-spectral estimates as a positive, integer scalar. This property applies when you set the FFTLengthSource property to 'Property'. The default value is 128.

Window

Window function

Specify a window function for the cross-spectral estimator as one of 'Rectangular' | 'Chebyshev' | 'Flat Top' | 'Hamming' | 'Hann' | 'Kaiser'. The default value is 'Hann'.

SidelobeAttenuation

Side lobe attenuation of window

Specify the side lobe attenuation of the window as a real, positive scalar, in decibels (dB). This property applies when you set the Window property to 'Chebyshev' or 'Kaiser'. The default is 60 dB.

FrequencyRange

Frequency range of the cross-spectrum estimate

Specify the frequency range of the cross-spectrum estimator as one of 'twosided' | 'onesided' | 'centered'.

If you set the FrequencyRange to 'onesided', the cross-spectrum estimator computes the onesided spectrum of real input signals, x and y. If the FFT length, NFFT, is even, the length of the cross-spectrum estimate is NFFT/2+1 and is computed over the interval [0,SampleRate/2]. If NFFT is odd, the length of the cross-spectrum estimate is equal to (NFFT+1)/2 and the interval is [0,SampleRate/2).

If you set the FrequencyRange to 'twosided', the cross-spectrum estimator computes the two-sided spectrum of complex or real input signals, x and y. The length of the cross-spectrum estimate is equal to NFFT. This value is computed over [0, SampleRate).

If you set the FrequencyRange to 'centered', the cross-spectrum estimator computes the centered twosided spectrum of complex or real input signals, x and y. The length of the cross-spectrum estimate is equal to NFFT and it is computed between (-SampleRate/2, SampleRate/2] and (-SampleRate/2, SampleRate/2) for even and odd lengths, respectively. The default value is 'Twosided'.

Methods

cloneCreate cross-spectrum estimator object with same property values
getFrequencyVectorGet the vector of frequencies at which the cross-spectrum is estimated
getRBWGet the resolution bandwidth of the cross-spectrum
isLockedLocked status for input attributes and nontunable properties
resetReset the internal states of the cross-spectrum estimator
stepEstimate the cross-spectrum of a signal

Examples

Compute the cross-power spectrum of two noisy sine waves

Generate two sine waves:

hsin1 = dsp.SineWave('Frequency',200, 'SampleRate', 1000);
hsin1.SamplesPerFrame = 1000;
hsin2 = dsp.SineWave('Frequency',100, 'SampleRate', 1000);
hsin2.SamplesPerFrame =  1000;

Use the Cross-Spectrum Estimator to compute the cross-spectrum of the signals. Also, use the Array Plot to display the spectra:

hs = dsp.CrossSpectrumEstimator('SampleRate', hsin1.SampleRate,...
     'FrequencyRange','centered');
hplot = dsp.ArrayPlot('PlotType','Line','XOffset',-500,'YLimits',...
        [-150 -60],'YLabel','Power Spectrum Density (Watts/Hz)',...
        'XLabel','Frequency (Hz)',...
        'Title','Cross Power Spectrum of Two Signals');

Add random noise to the sine waves. Step through the System objects to obtain the data streams, and plot the cross-power spectrum of the two signals:

for ii = 1:10
x = step(hsin1) + 0.05*randn(1000,1);
y = step(hsin2) + 0.05*randn(1000,1);
Pxy = step(hs, x, y);
step(hplot,20*log10(abs(Pxy)));
end

Algorithms

Given two signals x and y as inputs. We first window the two inputs, and scale them by the window power. We then take FFT of the signals, calling them X and Y. This is followed by taking the cross correlation of the FFT, i.e., Z = X*conj(Y). We average the last N number of Z's, and scale the answer by the sample rate.

For further information refer to the Algorithms section in Spectrum Analyzer, which uses the same algorithm.

References

[1] Hayes, Monson H. Statistical Digital Signal Processing and Modeling. Hoboken, NJ: John Wiley & Sons, 1996

[2] Kay, Steven M. Modern Spectral Estimation: Theory and Application. Englewood Cliffs, NJ: Prentice Hall, 1999

[3] Stoica, Petre and Randolph L. Moses. Spectral Analysis of Signals. Englewood Cliffs, NJ: Prentice Hall, 2005

[4] Welch, P. D. ``The use of fast Fourier transforms for the estimation of power spectra: A method based on time averaging over short modified periodograms,'' IEEE Transactions on Audio and Electroacoustics, Vol. 15, pp. 70–73, 1967.

Was this topic helpful?