我希望我为这个问题选择了合适的平台(如果它与数学交换或计算机科学更相关,那就更好了)。
无论如何,我已经读过信号处理中的卷积,我想尝试实现它。我能够计算出卷积为N+M-1
的长度。
这可以通过以下函数(Python)完成:
def convolve(x, h):
xLen = len(x)
hLen = len(h)
if xLen == 0 or hLen == 0:
return None
totalLength = xLen + hLen - 1
init = 0
y = [0] * totalLength
for n in range(init, totalLength):
yn = 0
k = max(0, n + 1 - xLen)
j = n - k
while k < hLen and j >= 0:
yn += x[j] * h[k]
j -= 1
k += 1
y[n] = yn
return y
这与将numpy.convolve
与mode=full
一起使用相同。
我的问题是我不理解numpys mode=same
,它执行卷积直到MAX(n, m)
。如何在不使信号失真的情况下计算卷积直到该长度?
换句话说,我很想知道numpy如何实现mode=same
。
非常感谢!