Пример #1
0
    def test_mask_single_channel(self):
        shape = (3, 3)
        signal = np.arange(np.prod(shape)).reshape(shape).astype(np.float32)
        mask = lorenz_mask(signal, weight=1)

        tc.assert_equal(
            mask,
            np.asarray([0, 0, 0, 0, 1, 1, 1, 1, 1],
                       dtype=np.float32).reshape(shape))
Пример #2
0
    def test_mask_two_channels(self):
        shape = (2, 3, 3)
        signal = np.arange(np.prod(shape)).reshape(shape).astype(np.float32)
        mask = lorenz_mask(signal, weight=1)

        tc.assert_equal(
            mask,
            np.asarray([[[0, 0, 0], [0, 1, 1], [1, 1, 1]],
                        [[0, 0, 1], [1, 1, 1], [1, 1, 1]]],
                       dtype=np.float32))
Пример #3
0
 def test_in_bound(self,
                   name,
                   sensor_axis=None,
                   lorenz_fraction=0.98,
                   weight=0.999):
     mask = lorenz_mask(self.signal,
                        sensor_axis=sensor_axis,
                        lorenz_fraction=lorenz_fraction,
                        weight=weight)
     assert_array_greater_equal(mask, 0.5 * (1 - weight))
     assert_array_less_equal(mask, 0.5 * (1 + weight))
Пример #4
0
 def test_shape(self,
                name,
                sensor_axis=None,
                lorenz_fraction=0.98,
                weight=0.999):
     mask = lorenz_mask(self.signal,
                        sensor_axis=sensor_axis,
                        lorenz_fraction=lorenz_fraction,
                        weight=weight)
     tc.assert_equal(
         mask.shape,
         tuple(v for i, v in enumerate([K, D, F, T]) if i != sensor_axis))
Пример #5
0
def beamform_mvdr_souden_with_lorenz_mask(
    Y,
    X_hat=None,
    debug=False,
):
    if X_hat is None:
        X_hat = Y

    X_mask = np.swapaxes(lorenz_mask(np.swapaxes(X_hat, -2, -1)), -2, -1)
    N_mask = 1 - X_mask

    return beamform_mvdr_souden_from_masks(
        Y=Y,
        X_mask=X_mask,
        N_mask=N_mask,
        debug=debug,
    )
Пример #6
0
 def test_multi_channel(self):
     signal = self.signal[0][0]
     mask1 = lorenz_mask(signal)
     mask2 = lorenz_mask([signal, signal])
     tc.assert_equal(mask1, mask2[0])
     tc.assert_equal(mask1, mask2[1])
Пример #7
0
 def test_weight_0(self, name, sensor_axis=None, lorenz_fraction=0.98):
     mask = lorenz_mask(self.signal,
                        sensor_axis=sensor_axis,
                        lorenz_fraction=lorenz_fraction,
                        weight=0)
     tc.assert_equal(mask, np.ones_like(mask) / 2)