在计算一个简单的移动平均值时,numpy.convolve
似乎可以完成这项工作。
问题:使用np.convolve(values, weights, 'valid')
时如何计算?
当文档提到convolution product is only given for points where the signals overlap completely
时,这两个信号指的是什么?
如果任何解释可以包括例子和插图,那将是非常有用的。
window = 10
weights = np.repeat(1.0, window)/window
smas = np.convolve(values, weights, 'valid')
卷积是一种主要用于信号处理的数学算子。Numpy只是使用这个信号处理术语来定义它,因此“信号”引用。numpy中的数组是一个信号。两个信号的卷积定义为第一个信号的积分,逆,扫过(“卷积到”)第二个信号,并在重叠向量的每个位置乘以(与标量积)。第一个信号通常被称为核,特别是当它是image processing或神经网络中的二维矩阵时,并且反转变为mirroring in 2-D(不是转置)。使用the animations on wikipedia可以更清楚地理解它。
卷积根据上下文有多种定义。有些在重叠开始时开始卷积,而另一些在重叠仅为部分时开始卷积。在numpy的“有效”模式下,重叠被指定为总是完整的。它被称为“有效”,因为结果中给出的每个值都是在没有数据外推的情况下完成的。
例如,如果数组X的长度为2,数组Y的长度为4,则在“有效”模式下,X到Y的卷积将得到长度为3的数组。
第一步,对于
X = [4 3]
和Y = [1 1 5 5]
:注意:如果X没有反转,则操作将被称为cross-correlation,而不是卷积。
第二步:
第三步:
模式“有效”的卷积结果将是[7 23 35]。
如果将重叠指定为一个单独的数据点(在模式“full”中为这种情况),则结果将为您提供一个长度为5的数组。第一步是:
等等。更多的外推模式存在。
相关问题 更多 >
编程相关推荐