模式的Numpy卷积实现=相同

时间:2019-06-09 14:09:44

标签: python numpy math

我希望我为这个问题选择了合适的平台(如果它与数学交换或计算机科学更相关,那就更好了)。

无论如何,我已经读过信号处理中的卷积,我想尝试实现它。我能够计算出卷积为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.convolvemode=full一起使用相同。

我的问题是我不理解numpys mode=same,它执行卷积直到MAX(n, m)。如何在不使信号失真的情况下计算卷积直到该长度?

换句话说,我很想知道numpy如何实现mode=same

非常感谢!

0 个答案:

没有答案