首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成正确形式的Toeplitz矩阵来执行离散卷积?

如何生成正确形式的Toeplitz矩阵来执行离散卷积?
EN

Stack Overflow用户
提问于 2015-12-30 19:50:50
回答 1查看 9.5K关注 0票数 5

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

请注意,这不是与一般Toeplitz矩阵完全相同的形式,但它经历了各种移位和零填充。

是否有一种方法可以完全基于rollhstack等在numpy中实现这一点,即不使用任何for循环?我试过各种轮班,但我真的不能把它变成上面所示的形式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-30 20:02:33

是的,你可以使用scipy.linalg.toeplitz

代码语言:javascript
复制
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]])
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34536264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档