离散度计算公式 python_SciPyTutorial-离散卷积convolve

19. Scipy Tutorial-卷积convolve

scipy的signal包经常用于信号处理,卷积、傅里叶变换、各种滤波、差值算法等。其中卷积在深度学习、机器学习等领域应用的较多。本章研究一下scipy.signal里的卷积相关函数。

一维卷积。一维卷积定义公式如下:

$$

y[n] = \sum_{k = -\infty}^{\infty} x[k]h[n - k]

$$

scipy.signal包里的convolve函数可以计算卷积。

#coding:utf-8

import numpy as np

from scipy import fftpack,signal

import matplotlib.pyplot as plt

x = np.array([1.0, 2.0, 3.0])

h = np.array([0.0, 1.0, 0.0, 0.0, 0.0])

y = signal.convolve(x, h)

print y

结果:

[ 0. 1. 2. 3. 0. 0. 0.]

如何得到?

st191.png

依据公式,可以先将$h$镜像为$h^{'}$,然后移动,$x$和$h^{'}$对应相乘求和即为一维的卷积值。

二维(离散)卷积。

$$

C(x,y) = \sum_{m = 0}^{M - 1} \sum_{n = 0}^{N - 1} A(m, n)B(x -m, y - n)

$$

这里有$x = (0,1,\cdots,M-1); y = (0,1,\cdots,N-1)$。

#coding:utf-8

import numpy as np

from scipy import fftpack,signal

import matplotlib.pyplot as plt

x = np.array([[1.0, 1.0, 0.0],[1.0, 1.0, 0.0], [0.0, 0.0, 0.0]])

h = np.array([[1.0, 0.0], [0.0, 1.0]])

y = signal.convolve(x, h)

print y

结果:

[[1. 1. 0. 0.]

[1. 2. 1. 0.]

[0. 1. 1. 0.]

[0. 0. 0. 0.]]

如何得到?先将$h$选择180度,由于$h$旋转180度后和$h$还是一样的。问题就简答了。下一章展示$h$旋转后不一样的问题例子。

st192.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值