您的位置:首页 > 编程语言 > Python开发

卷积为什么要旋转180度

2018-07-19 09:34 148 查看
参考《最容易理解的对卷积(convolution)的解释》
https://blog.csdn.net/bitcarmanlee/article/details/54729807

这篇博客详细讲解了“卷积”,提及了为什么要反转180度,我简述下。

1.卷积的来源

信号与系统里面经常讲到卷积(convolution),自动控制原理里面也会经常有提到卷积,线性系统理论与数字信号处理,里面也是各种大把大把卷积的概念。

信号的输出不仅与当前时刻的输入有关,也跟之前若干时刻的输入有关,所以输出的信号是一个加权叠加。



求x
* y


第1步,x
乘以y[0]并平移到位置0。

第2步,x
乘以y[1]并平移到位置1。

第3步,x
乘以y[2]并平移到位置2。

最后,把上面三个图叠加,就得到了x
* y




2.旋转180的来源

2.1.卷积的定义



2.1.参数n、τ、n-τ

注意上面公式,函数f(τ)、g(n-τ)的参数n、τ、n-τ和是 n = τ + (n-τ)。



2.2.代入1中的图示



2.3.转换

相对于2.1的图,如果要将f(τ)与g(n-τ)下标相同的元素进行运算,就要将g(n-τ)反转180度,再与f(τ)运算,就是下图这个样子,这就是为什么要反转180度。



3.Python的scipy.signal库

volume and kernel should have the same dimensionality

import numpy as np
f=np.array([1,2,3,4])
g=np.array([4,5])

import scipy.signal as sg

convolve = sg.convolve(f, g)
print(convolve)  # [ 4 13 22 31 20]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SciPy Python NumPy