Documentation

dsp.SpectrumEstimator System object

Package: dsp

Estimate power spectrum or power-density spectrum

Description

The dsp.SpectrumEstimator computes the power spectrum or the power-density spectrum of a signal, using the Welch algorithm and the Periodogram method. The spectrum can be expressed in Watts or in decibels. This object can also estimate the max-hold and min-hold spectra of the signal.

To implement the spectrum estimation object:

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

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

Construction

SE = dsp.SpectrumEstimator returns a System object™, SE, that computes the frequency power spectrum or the power-density spectrum of real or complex signals. This System object uses the periodogram method and Welch's averaged, modified periodogram method.

SE = dsp.SpectrumEstimator('PropertyName',PropertyValue,...) returns a Spectrum Estimator System object, SE, 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.

SpectrumType

Spectrum type

Specify the spectrum type as one of 'Power' | 'Power density'. When the spectrum type is 'Power', the power-density spectrum is scaled by the equivalent noise bandwidth of the window (in Hz). The default value is 'Power'. This property is tunable.

SpectralAverages

Number of spectral averages

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

FFTLengthSource

Source of the FFT length value

Specify the source of the FFT length value as one of 'Auto' | 'Property'. The default value is 'Auto'. If you set this property to 'Auto', the 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 Spectrum Estimator uses to compute 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 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 value is 60 dB.

FrequencyRange

Frequency range of the spectrum estimate

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

If you set the FrequencyRange to 'onesided', then the Spectrum Estimator computes the one-sided spectrum of a real input signal. When the FFT length, NFFT, is even, the spectrum estimate has length (NFFT/2) + 1 and is computed over the frequency range [0 SampleRate/2], where SampleRate is the sample rate of the input signal. When NFFT is odd, the spectrum estimate has length (NFFT + 1)/2 and is computed over the frequency range [0 SampleRate/2).

If you set the FrequencyRange to 'twosided', then the Spectrum Estimator computes the two-sided spectrum of a complex or real input signal. The length of the spectrum estimate is equal to the FFT length. The spectrum estimate is computed over the frequency range [0 SampleRate), where SampleRate is the sample rate of the input signal.

If you set the FrequencyRange to 'centered', then the Spectrum Estimator computes the centered two-sided spectrum of a complex or real input signal. The length of the spectrum estimate is equal to the FFT length. The spectrum estimate is computed over the frequency range (-SampleRate/2 SampleRate/2] when the FFT length is even and (-SampleRate/2 SampleRate/2) when the FFT length is odd.

The default value is 'twosided'.

PowerUnits

Power units

Specify the units used to measure power as one of 'Watts' | 'dBW' | 'dBm'. The default value is 'Watts'.

ReferenceLoad

Reference load

Specify the load that the spectrum estimator uses as a reference to compute power values as a real, positive scalar in ohms. The default value is 1 ohm.

OutputMaxHoldSpectrum

Output max-hold spectrum

Set this property to true so that the Spectrum Estimator computes and outputs the max-hold spectrum of each input channel. The max-hold spectrum is computed by keeping, at each frequency bin, the maximum value of all the power spectrum estimates. The default is false.

OutputMinHoldSpectrum

Output min-hold spectrum

Set this property to true so that the Spectrum Estimator computes and outputs the min-hold spectrum of each input channel. The min-hold spectrum is computed by keeping, at each frequency bin, the minimum value of all the power spectrum estimates. The default is false.

Methods

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

Examples

expand all

Power and Max-Hold Spectra of Noisy Sine Wave

Generate a sine wave.

SINE = dsp.SineWave('Frequency',100,'SampleRate',1000, ...
    'SamplesPerFrame',1000);

Use the Spectrum Estimator to compute the power spectrum and the max-hold spectrum of the sine wave. Use the Array Plot to display the spectra.

SE = dsp.SpectrumEstimator('SampleRate',SINE.SampleRate, ...
    'SpectrumType','Power','PowerUnits','dBm', ...
    'FrequencyRange','centered','OutputMaxHoldSpectrum',true);
PLOTTER = dsp.ArrayPlot('PlotType','Line','XOffset',-500, ...
    'YLimits',[-60 30], 'Title','Power Spectrum of 100 Hz Sine Wave', ...
    'YLabel','Power Spectrum (dBm)','XLabel','Frequency (Hz)');

Add random noise to the sine wave. Step through the System objects to obtain the data streams, and plot the power spectrum of the signal.

for ii = 1:10
    x = step(SINE) + 0.05*randn(1000,1);
    [Pxx,Pmax] = step(SE,x);
    step(PLOTTER,[Pxx Pmax]);
end

Algorithms

Let x be the input frame. We first multiply x by the window, and scale it by the window power. We then take FFT of the signal, calling it Y, and take the square magnitude using Z = Y*conj(Y). We average the last N Zs 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. Upper Saddle River, 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, 1967, pp. 70–73.

Introduced in R2013b

Was this topic helpful?