cpsd
Compute cross power spectral density.
Syntax
Pxy=cpsd(x,y)
Pxy=cpsd(x,y,window)
Pxy=cpsd(x,y,window,overlap)
Pxy=cpsd(x,y,window,overlap,nfft)
Pxy=cpsd(x,y,window,overlap,nfft,fs)
Pxy=cpsd(x,y,window,overlap,nfft,fs,range)
[Pxy,freq]=cpsd(...)
cpsd(...)
Inputs
- x
- The first signal.
- y
- The second signal.
- window
- The window size, or the window vector.
- overlap
- The number of overlapping points in adjacent windows.
- nfft
- The size of the fft.
- fs
- The sampling frequency.
- range
- The spectrum type: 'onesided' or 'twosided'.
Outputs
- Pxy
- The cross power spectral density.
- freq
- The vector of frequencies corresponding to the density values.
Example
n = 1125;
fs = 1000;
ts = 1/fs;
t = [0:1:(n-1)]*ts;
f1 = 24;
f2 = 56;
omega1 = 2 * pi * f1;
omega2 = 2 * pi * f2;
signal1 = 3 + 5 * cos(omega1 * t) + 7 * cos(omega2 * t);
signal2 = 3 + 7 * cos(omega1 * t) + 3 * sin(omega2 * t);
window = hann(250,'periodic');
overlap = 125;
fftsize = 250;
range = 'onesided';
[Pxy,frq]=cpsd(signal1,signal2,window,overlap,fftsize,fs,range);
f = frq([1, 2, 6, 7, 8, 14, 15, 16])'
p = Pxy([1, 2, 6, 7, 8, 14, 15, 16])'
f = [Matrix] 1 x 8
0 4 20 24 28 52 56 60
p = [Matrix] 1 x 8
1.50000 0.75000 0.72917 2.91667 0.72917 0.43750 1.75000 0.43750
Comments
With no return arguments, the function will automatically plot the magnitude response.
The 'onesided' output has a length of nfft/2+1 if nfft is even, or (nfft+1)/2 if nfft is odd.
It is often recommended to remove the signal means prior to calling cpsd. The function does not remove the mean automatically.
The optional arguments can be defaulted using []. The defaults are as follows:
- window
- A Hamming window with the largest length that produces eight data segments.
- overlap
- One half of the window length.
- nfft
- The window length. A larger value will pad zeros to each block of windowed data.
- fs
- 1.0 Hz.
- range
- 'onesided'