Python:一维数组循环卷积


问题内容

我想知道numpy /
scipy中是否存在用于1d数组圆形卷积的函数。该scipy.signal.convolve()函数仅提供“模式”而不提供“边界”,而该signal.convolve2d()函数需要2d数组作为输入。

我需要这样做,以比较开放卷积和圆形卷积作为时间序列作业的一部分。


问题答案:

由于这是做作业,因此我省略了一些细节。

通过卷积的定义,如果你追加一个信号 一个
给自己,然后之间的卷积 AAb 将包含的循环卷积内 一个b

例如,考虑以下几点:

import numpy as np
from scipy import signal

%pylab inline

a = np.array([1] * 10)
b = np.array([1] * 10)

plot(signal.convolve(a, b));

在此处输入图片说明

那就是标准的卷积。现在,但是

plot(signal.convolve(a, np.concatenate((b, b))));

在此处输入图片说明

在最后一个图中,尝试查看圆卷积的结果在哪里,以及如何对此进行概括。