Cross power spectral density
Pxy = cpsd(x,y)
Pxy = cpsd(x,y,window)
Pxy = cpsd(x,y,window,noverlap)
[Pxy,W] = cpsd(x,y,window,noverlap,nfft)
[Pxy,F] = cpsd(x,y,window,noverlap,nfft,fs)
[...] = cpsd(...,'twosided')
cpsd(...)
Pxy = cpsd(x,y)
estimates
the cross power spectral density, Pxy
, of two discrete-time
signals, x
and y
, using Welch's
averaged, modified periodogram method of spectral estimation.
The input signals may be either vectors or two-dimensional matrices.
If both are vectors, they must have the same length. If both are matrices,
they must have the same size, and cpsd
operates
columnwise: Pxy(:,n) = cpsd(x(:,n),y(:,n))
. If
one is a matrix and the other is a vector, then the vector is converted
to a column vector and internally expanded so both inputs have the
same number of columns.
For real x
and y
, cpsd
returns
a one-sided CPSD and for complex x
or y
,
it returns a two-sided CPSD.
cpsd
uses the following default values:
Parameter | Description | Default Value |
---|---|---|
| FFT length which determines the frequencies at which the PSD is estimated For real If | Maximum of 256 or the next power of 2 greater than the
length of each section of |
| Sampling frequency | 1 |
| Windowing function and number of samples to use for each section | Periodic Hamming window of length to obtain eight equal
sections of |
| Number of samples by which the sections overlap | Value to obtain 50% overlap |
Note
You can use the empty matrix, |
Pxy = cpsd(x,y,window)
specifies
a windowing function, divides x
and y
into
overlapping sections of the specified window length, and windows each
section using the specified window function. If you supply a scalar
for window
, Pxy
uses a Hamming
window of that length. x
and y
are
divided into eight equal sections of that length. If the signal cannot
be sectioned evenly with 50% overlap, it is truncated.
Pxy = cpsd(x,y,window,noverlap)
overlaps
the sections of x
by noverlap
samples. noverlap
must
be an integer smaller than the length of window
.
[Pxy,W] = cpsd(x,y,window,noverlap,nfft)
uses
the specified FFT length nfft
in estimating the
CPSD. It also returns W
, which is the vector of
normalized frequencies (in rad/sample) at which the CPSD is estimated.
For real signals, the range of W
is [0, π] when nfft
is
even and [0, π) when nfft
is
odd. For complex signals, the range of W
is [0, 2π).
[Pxy,F] = cpsd(x,y,window,noverlap,nfft,fs)
returns Pxy
as
a function of frequency and a vector F
of frequencies
at which the CPSD is estimated. fs
is the sampling
frequency in Hz. For real signals, the range of F
is
[0, fs
/2] when nfft
is
even and [0, fs
/2) when nfft
is
odd. For complex signals, the range of F
is [0, fs
).
[...] = cpsd(...,'twosided')
returns
the two-sided CPSD of real signals x
and y
.
The length of the resulting Pxy
is nfft
and
its range is [0, 2π) if
you do not specify fs
. If you specify fs
,
the range is [0, fs
). Entering 'onesided'
for
a real signal produces the default. You can place the 'onesided'
or 'twosided'
string
in any position after the noverlap
parameter.
cpsd(...)
plots the CPSD
versus frequency in the current figure window.
[1] Rabiner, Lawrence R., and B. Gold. Theory and Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975, pp. 414–419.
[2] Welch, Peter D. "The Use of the Fast Fourier Transform for the Estimation of Power Spectra: A Method Based on Time Averaging Over Short, Modified Periodograms." IEEE^{®} Transactions on Audio and Electroacoustics, Vol. AU-15, June 1967, pp. 70–73.
[3] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.
mscohere
| pburg
| pcov
| peig
| periodogram
| pmcov
| pmtm
| pmusic
| pwelch
| pyulear
| tfestimate