如何在 python 中逐列对两个矩阵进行线性卷积

How to do linear convolution for two matrix column by column in python

我有两个矩阵,我需要在矩阵 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 的工作中还是个新手!!

如上面注释中所写,可以在for循环之前添加这一行,

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

如你所知,两个向量卷积的结果向量的长度是它们长度的总和 - 1,为此我使用了 (10+7-1) 并且它被推广到任何两个向量。

祝你好运