Ejemplo n.º 1
0
 def test_correlations_narrow_v1_vs_v5(self):
     inverse_power = wpe.get_power_inverse(self.Y)
     R_desired, r_desired = wpe.get_correlations_narrow(
         self.Y, inverse_power, self.K, self.delay)
     R_actual, r_actual = wpe.get_correlations_narrow_v5(
         self.Y, inverse_power, self.K, self.delay)
     tc.assert_allclose(R_actual, R_desired)
     tc.assert_allclose(r_actual, r_desired)
Ejemplo n.º 2
0
    def test_inverse_power(self):
        np_inv_power = wpe.get_power_inverse(self.Y)

        with self.test_session() as sess:
            tf_signal = tf.placeholder(tf.complex128, shape=[None, None])
            tf_res = tf_wpe.get_power_inverse(tf_signal)
            tf_inv_power = sess.run(tf_res, {tf_signal: self.Y})

        np.testing.assert_allclose(np_inv_power, tf_inv_power)
Ejemplo n.º 3
0
 def test_correlations_v1_vs_v2_toy_example(self):
     K = 3
     delay = 1
     Y = np.asarray([[11, 12, 13, 14], [41, 22, 23, 24]], dtype=np.float32)
     inverse_power = wpe.get_power_inverse(Y)
     R_desired, r_desired = wpe.get_correlations(Y, inverse_power, K, delay)
     R_actual, r_actual = wpe.get_correlations_v2(Y, inverse_power, K,
                                                  delay)
     tc.assert_allclose(R_actual, R_desired)
     tc.assert_allclose(r_actual, r_desired)
Ejemplo n.º 4
0
    def test_filter_matrix_conj_v1_vs_v5(self):
        inverse_power = wpe.get_power_inverse(self.Y)

        correlation_matrix, correlation_vector = wpe.get_correlations(
            self.Y, inverse_power, self.K, self.delay)
        desired = wpe.get_filter_matrix_conj(correlation_matrix,
                                             correlation_vector, self.K,
                                             self.D)
        actual = wpe.get_filter_matrix_conj_v5(self.Y, inverse_power, self.K,
                                               self.delay)
        tc.assert_allclose(actual, desired, atol=1e-10)
Ejemplo n.º 5
0
    def test_correlations(self):
        np_inv_power = wpe.get_power_inverse(self.Y)
        np_corr = wpe.get_correlations_narrow(self.Y, np_inv_power, self.K,
                                              self.delay)

        with tf.Graph().as_default(), tf.Session() as sess:
            tf_signal = tf.placeholder(tf.complex128, shape=[None, None])
            tf_inverse_power = tf_wpe.get_power_inverse(tf_signal)
            tf_res = tf_wpe.get_correlations_for_single_frequency(
                tf_signal, tf_inverse_power, self.K, self.delay)
            tf_corr = sess.run(tf_res, {tf_signal: self.Y})

        np.testing.assert_allclose(np_corr[0], tf_corr[0])
        np.testing.assert_allclose(np_corr[1], tf_corr[1])
Ejemplo n.º 6
0
    def test_correlations_narrow_v1_vs_v6(self):
        inverse_power = wpe.get_power_inverse(self.Y)
        R_desired, r_desired = wpe.get_correlations_narrow(
            self.Y, inverse_power, self.K, self.delay)

        s = [Ellipsis, slice(self.delay + self.K - 1, None)]
        Y_tilde = wpe.build_y_tilde(self.Y, self.K, self.delay)
        R_actual, r_actual = wpe.get_correlations_v6(self.Y[s], Y_tilde[s],
                                                     inverse_power[s])
        tc.assert_allclose(R_actual.conj(), R_desired)
        tc.assert_allclose(r_actual.conj(),
                           np.swapaxes(r_desired, 1,
                                       2).reshape(-1, r_desired.shape[-1]),
                           rtol=1e-5,
                           atol=1e-5)
Ejemplo n.º 7
0
    def test_filter_matrix(self):
        np_inv_power = wpe.get_power_inverse(self.Y)
        np_filter_matrix = wpe.get_filter_matrix_conj_v5(
            self.Y, np_inv_power, self.K, self.delay)

        with tf.Graph().as_default(), tf.Session() as sess:
            tf_signal = tf.placeholder(tf.complex128, shape=[None, None])
            tf_inverse_power = tf_wpe.get_power_inverse(tf_signal)
            tf_matrix, tf_vector = tf_wpe.get_correlations_for_single_frequency(
                tf_signal, tf_inverse_power, self.K, self.delay)
            tf_filter = tf_wpe.get_filter_matrix_conj(tf_signal, tf_matrix,
                                                      tf_vector, self.K,
                                                      self.delay)
            tf_filter_matrix, tf_inv_power_2 = sess.run(
                [tf_filter, tf_inverse_power], {tf_signal: self.Y})

        np.testing.assert_allclose(np_inv_power, tf_inv_power_2)
        np.testing.assert_allclose(np_filter_matrix, tf_filter_matrix)
Ejemplo n.º 8
0
    def test_filter_matrix_conj_v1_vs_v7(self):
        inverse_power = wpe.get_power_inverse(self.Y)

        correlation_matrix, correlation_vector = wpe.get_correlations(
            self.Y, inverse_power, self.K, self.delay)
        desired = wpe.get_filter_matrix_conj(correlation_matrix,
                                             correlation_vector, self.K,
                                             self.D)

        s = [Ellipsis, slice(self.delay + self.K - 1, None)]
        Y_tilde = wpe.build_y_tilde(self.Y, self.K, self.delay)
        actual = wpe.get_filter_matrix_v7(
            self.Y,
            Y_tilde=Y_tilde,
            inverse_power=inverse_power,
        )
        tc.assert_allclose(actual.conj(),
                           np.swapaxes(desired, 1,
                                       2).reshape(-1, desired.shape[-1]),
                           atol=1e-10)
Ejemplo n.º 9
0
    def test_filter_operation(self):
        np_inv_power = wpe.get_power_inverse(self.Y)
        np_filter_matrix = wpe.get_filter_matrix_conj_v5(
            self.Y, np_inv_power, self.K, self.delay)
        np_filter_op = wpe.perform_filter_operation_v4(self.Y,
                                                       np_filter_matrix,
                                                       self.K, self.delay)

        with tf.Graph().as_default(), tf.Session() as sess:
            tf_signal = tf.placeholder(tf.complex128, shape=[None, None])
            tf_inverse_power = tf_wpe.get_power_inverse(tf_signal)
            tf_matrix, tf_vector = tf_wpe.get_correlations_narrow(
                tf_signal, tf_inverse_power, self.K, self.delay)
            tf_filter = tf_wpe.get_filter_matrix_conj(tf_signal,
                                                      tf_inverse_power,
                                                      tf_matrix, tf_vector,
                                                      self.K, self.delay)
            tf_filter_op = tf_wpe.perform_filter_operation(
                tf_signal, tf_filter, self.K, self.delay)
            tf_filter_op = sess.run(tf_filter_op, {tf_signal: self.Y})

        np.testing.assert_allclose(np_filter_op, tf_filter_op)