Main Content

Spectrum Normalization

The spectrum of a signal is the square of the Fourier transform of the signal. The spectral estimate using the commands spa, spafdr, and etfe is normalized by the sample time T:

Φy(ω)=Tk=MMRy(kT)eiwTWM(k)

where WM(k) is the lag window, and M is the width of the lag window. The output covariance Ry(kT) is given by the following discrete representation:

R^y(kT)=1Nl=1Ny(lTkT)y(lT)

Because there is no scaling in a discrete Fourier transform of a vector, the purpose of T is to relate the discrete transform of a vector to the physically meaningful transform of the measured signal. This normalization sets the units of Φy(ω) as power per radians per unit time, and makes the frequency units radians per unit time.

The scaling factor of T is necessary to preserve the energy density of the spectrum after interpolation or decimation.

By Parseval's theorem, the average energy of the signal must equal the average energy in the estimated spectrum, as follows:

Ey2(t)=12ππ/Tπ/TΦy(ω)dωS1Ey2(t)S212ππ/Tπ/TΦy(ω)dω

To compare the left side of the equation (S1) to the right side (S2), enter the following commands. In this code, phiy contains Φy(ω) between ω=0 and ω=πT with the frequency step given as follows:

(πTlength(phiy))

load iddata1

Create a time-series iddata object.

y = z1(:,1,[]);

Define sample interval from the data.

T = y.Ts;

Estimate the frequency response.

sp = spa(y);

Remove spurious dimensions.

phiy = squeeze(sp.spec);

Compute average energy of the signal.

S1 = sum(y.y.^2)/size(y,1)
S1 = 
19.4646

Compute average energy from the estimated energy spectrum, where S2 is scaled by T.

S2 = sum(phiy)/length(phiy)/T
S2 = 
19.2076

Thus, the average energy of the signal approximately equals the average energy in the estimated spectrum.

See Also

| |