def test_complex_2_real_imag_array_equality_imag(array): array_real_imag = complex_2_real_imag(array) assert_equal(array_real_imag[:, len(array_real_imag[0]) // 2:], np.imag(array))
def test_complex_2_real_imag_array_len(array): array_real_imag = complex_2_real_imag(array) assert_equal(len(array_real_imag), len(array)) assert_equal(array_real_imag.shape[1], array.shape[1] * 2)
def test_complex_2_real_imag_vector_len(array): assert_equal(len(complex_2_real_imag(array)), len(array) * 2)
def test_complex_2_real_imag_vector_equality_imag(array): array_real_imag = complex_2_real_imag(array) assert_equal(array_real_imag[len(array_real_imag) // 2:], np.imag(array))
def monte_carlo( measurement_system, random_number_generator, sampling_freq, freqs, complex_freq_resp, reference_array_path, ): udelta = 0.1 * measurement_system["delta"] uS0 = 0.001 * measurement_system["S0"] uf0 = 0.01 * measurement_system["f0"] runs = 10000 MCS0 = random_number_generator.normal( loc=measurement_system["S0"], scale=uS0, size=runs ) MCd = random_number_generator.normal( loc=measurement_system["delta"], scale=udelta, size=runs ) MCf0 = random_number_generator.normal( loc=measurement_system["f0"], scale=uf0, size=runs ) HMC = np.empty((runs, len(freqs)), dtype=complex) for index, mcs0_mcd_mcf0 in enumerate(zip(MCS0, MCd, MCf0)): bc_, ac_ = sos_phys2filter(mcs0_mcd_mcf0[0], mcs0_mcd_mcf0[1], mcs0_mcd_mcf0[2]) b_, a_ = dsp.bilinear(bc_, ac_, sampling_freq) HMC[index, :] = dsp.freqz(b_, a_, 2 * np.pi * freqs / sampling_freq)[1] H = complex_2_real_imag(complex_freq_resp) assert_allclose( H, np.load( os.path.join(reference_array_path, "test_LSFIR_H.npz"), )["H"], ) uAbs = np.std(np.abs(HMC), axis=0) assert_allclose( uAbs, np.load( os.path.join(reference_array_path, "test_LSFIR_uAbs.npz"), )["uAbs"], rtol=3.5e-2, ) uPhas = np.std(np.angle(HMC), axis=0) assert_allclose( uPhas, np.load( os.path.join(reference_array_path, "test_LSFIR_uPhas.npz"), )["uPhas"], rtol=4.3e-2, ) UH = np.cov(np.hstack((np.real(HMC), np.imag(HMC))), rowvar=False) UH = make_semiposdef(UH) assert_allclose( UH, np.load( os.path.join(reference_array_path, "test_LSFIR_UH.npz"), )["UH"], atol=1, ) return {"H": H, "uAbs": uAbs, "uPhas": uPhas, "UH": UH}