Как сделать линейную свертку для двух матриц столбец за столбцом в питоне - PullRequest
1 голос
/ 11 октября 2019

У меня есть две матрицы, мне нужно свернуть каждый столбец из матрицы A в соответствующий столбец из матрицы B и сохранить результаты в матрице y. Например,

, A - сложная матрица измерения 10 x 5, а матрица b - тоже сложная матрица измерения 7 x 5, поэтому я могу сделать это в matlab, как показано ниже:

A = randi(10,5) + 1j*randi(10,5); 
B = randi(7,5) + 1j*randi(7,5); 
for i = 1 : 5 
    y(:,i) = conv(A(:,i),B(:,i));
end

Поэтому, когда я построил этот шаг в python, как показано ниже:

for i in range(5):
    y[:,i]= np.convolve(A[:, i], B[:, i])

, я получаю ошибку

UnboundLocalError: local variable 'y' referenced before assignment

, пожалуйста, любой может помочь решить эту проблему. Я все еще новичок в работе на Python!

1 Ответ

1 голос
/ 12 октября 2019

Как написано в приведенном выше комментарии, вы можете добавить эту строку перед циклом for,

y = np.zeros((10+7-1,5)) 

Поскольку вы знаете, что длина приведенного вектора свертки двух векторов равна сумме их длины - 1для этого я использовал (10 + 7-1), и это обобщено для любых двух векторов.

Удачи

...