离散卷积可以通过Toeplitz矩阵执行,如下所示:(Wiki文章)

请注意,这不是与一般Toeplitz矩阵完全相同的形式,但它经历了各种移位和零填充。
是否有一种方法可以完全基于roll、hstack等在numpy中实现这一点,即不使用任何for循环?我试过各种轮班,但我真的不能把它变成上面所示的形式。
发布于 2015-12-30 20:02:33
是的,你可以使用scipy.linalg.toeplitz
import numpy as np
from scipy import linalg
h = np.arange(1, 6)
padding = np.zeros(h.shape[0] - 1, h.dtype)
first_col = np.r_[h, padding]
first_row = np.r_[h[0], padding]
H = linalg.toeplitz(first_col, first_row)
print(repr(H))
# array([[1, 0, 0, 0, 0],
# [2, 1, 0, 0, 0],
# [3, 2, 1, 0, 0],
# [4, 3, 2, 1, 0],
# [5, 4, 3, 2, 1],
# [0, 5, 4, 3, 2],
# [0, 0, 5, 4, 3],
# [0, 0, 0, 5, 4],
# [0, 0, 0, 0, 5]])https://stackoverflow.com/questions/34536264
复制相似问题