def cross_correlation_signals(signal): length = signal.shape[1] L = length max_lag = L - 1 out = np.zeros((signal.shape[0] ** 2, 2 * L - 1), dtype=np.complex128) for lag in range(max_lag + 1): # non-negative lags all_lags = np.dot(signal[:, lag:length], sc.hermitian(signal[:, : (length - lag)])) all_lags = all_lags.ravel(order="F") / float(length - lag) out[:, lag + max_lag] = all_lags for lag in range(max_lag + 1): # non-positive lags all_lags = np.dot(signal[:, : length - lag], sc.hermitian(signal[:, lag:length])) all_lags = all_lags.ravel(order="F") / float(length - lag) out[:, max_lag - lag] = all_lags return out
def cross_correlation_signals(signal): length = signal.shape[1] L = length max_lag = L - 1 out = np.zeros((signal.shape[0]**2, 2 * L - 1), dtype=np.complex128) for lag in range(max_lag + 1): # non-negative lags all_lags = np.dot(signal[:, lag:length], sc.hermitian(signal[:, :(length - lag)])) all_lags = all_lags.ravel(order='F') / float(length - lag) out[:, lag + max_lag] = all_lags for lag in range(max_lag + 1): # non-positive lags all_lags = np.dot(signal[:, :length - lag], sc.hermitian(signal[:, lag:length])) all_lags = all_lags.ravel(order='F') / float(length - lag) out[:, max_lag - lag] = all_lags return out
def test_generate_csx(self): Cry = self.ref['Cry'] R_pinv = self.ref['R_inv'] R_pinv_h = sc.hermitian(R_pinv) Csx = self.detect.generate_Csx(Cry, R_pinv, R_pinv_h) Csx_ref = self.ref['Csx'] np.testing.assert_array_almost_equal(Csx, Csx_ref)
def test_hermitian(self): matrix = np.array([[1 + 1j, 0 + 5j], [2 - 3j, 4 + 1j]]) matrix_ref = np.array([[1 - 1j, 2 + 3j], [0 - 5j, 4 - 1j]]) matrix_H = sc.hermitian(matrix) np.testing.assert_array_equal(matrix_H, matrix_ref)