如何在 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) 并且它被推广到任何两个向量。
祝你好运
我有两个矩阵,我需要在矩阵 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) 并且它被推广到任何两个向量。
祝你好运