def test_periodogram_csd(): """Test corner cases of periodogram_csd""" arsig1, _, _ = utils.ar_generator(N=1024) arsig2, _, _ = utils.ar_generator(N=1024) tseries = np.vstack([arsig1, arsig2]) Sk = np.fft.fft(tseries) f1, c1 = tsa.periodogram_csd(tseries) f2, c2 = tsa.periodogram_csd(tseries, Sk=Sk) npt.assert_equal(c1, c2) # Check that providing a complex signal does the right thing # (i.e. two-sided spectrum): N = 1024 r, _, _ = utils.ar_generator(N=N) c, _, _ = utils.ar_generator(N=N) arsig1 = r + c * scipy.sqrt(-1) r, _, _ = utils.ar_generator(N=N) c, _, _ = utils.ar_generator(N=N) arsig2 = r + c * scipy.sqrt(-1) tseries = np.vstack([arsig1, arsig2]) f, c = tsa.periodogram_csd(tseries) npt.assert_equal(f.shape[0], N) # Should be N, not the one-sided N/2 + 1
def test_periodogram_csd(): """Test corner cases of periodogram_csd""" arsig1, _, _ = utils.ar_generator(N=1024) arsig2, _, _ = utils.ar_generator(N=1024) tseries = np.vstack([arsig1, arsig2]) Sk = fftpack.fft(tseries) f1, c1 = tsa.periodogram_csd(tseries) f2, c2 = tsa.periodogram_csd(tseries, Sk=Sk) npt.assert_equal(c1, c2) # Check that providing a complex signal does the right thing # (i.e. two-sided spectrum): N = 1024 r, _, _ = utils.ar_generator(N=N) c, _, _ = utils.ar_generator(N=N) arsig1 = r + c * scipy.sqrt(-1) r, _, _ = utils.ar_generator(N=N) c, _, _ = utils.ar_generator(N=N) arsig2 = r + c * scipy.sqrt(-1) tseries = np.vstack([arsig1, arsig2]) f, c = tsa.periodogram_csd(tseries) npt.assert_equal(f.shape[0], N) # Should be N, not the one-sided N/2 + 1
def test_hermitian_periodogram_csd(): """ Make sure CSD matrices returned by various methods have Hermitian symmetry. """ sig = np.random.randn(4, 256) _, csd1 = tsa.periodogram_csd(sig) for i in range(4): for j in range(i + 1): xc1 = csd1[i, j] xc2 = csd1[j, i] npt.assert_equal(xc1, xc2.conj(), err_msg='Periodogram CSD not Hermitian') _, psd = tsa.periodogram(sig) for i in range(4): npt.assert_almost_equal( psd[i], csd1[i, i].real, err_msg='Periodgram CSD diagonal inconsistent with real PSD')
def test_hermitian_periodogram_csd(): """ Make sure CSD matrices returned by various methods have Hermitian symmetry. """ sig = np.random.randn(4,256) _, csd1 = tsa.periodogram_csd(sig) for i in range(4): for j in range(i+1): xc1 = csd1[i,j] xc2 = csd1[j,i] npt.assert_equal( xc1, xc2.conj(), err_msg='Periodogram CSD not Hermitian' ) _, psd = tsa.periodogram(sig) for i in range(4): npt.assert_almost_equal( psd[i], csd1[i,i].real, err_msg='Periodgram CSD diagonal inconsistent with real PSD' )