Есть ли более эффективный метод для взаимной корреляции всех строк двух матриц в Python? - PullRequest
0 голосов
/ 11 октября 2018

Я смоделировал среду, в которой два приемника записывают входящие сигналы с течением времени.Каждый сигнал записывается как вектор строки.Это происходит для сотен образцов.Таким образом, мои данные в итоге состоят из двух матриц, каждая из которых имеет вид MxN, где M примерно 200, а N примерно 50 000 (в зависимости от параметров моделирования).

Затем мне нужно найти взаимную корреляцию между сигналами, записанными на каждом приемнике для каждой выборки сигнала.В настоящее время я делаю это, используя простой цикл for со следующим кодом:

for xcorr_index in range(gamma_1.shape[1]):
    XCorrMat[:, xcorr_index] = np.array([np.correlate(RecSig1[xcorr_index,:], RecSig2[xcorr_index,:], "full")]);

Это прекрасно работает, но для запуска требуется около 90 секунд.Весь прогон каждой симуляции занимает около 105 секунд.Так что, если бы я мог векторизовать эту часть или улучшить ее время выполнения, я бы сэкономил много времени на моделирование (мне нужно в конечном итоге запустить тысячи этих симуляций, поэтому любое улучшение будет суммироваться).

Я посмотрел вокруг и увидел один или два похожих вопроса, но все они имеют дело с чем-то вроде: «У меня есть вектор столбца b, и я хочу взаимную корреляцию b со всеми векторами столбцов матрицыA. "

Любая помощь очень ценится, спасибо.

...