numpy卷积函数convolve

基本原理

卷积是一种积分变换方法,可理解为滑动平均的推广,在连续函数和数列上的定义分别为

f ( t ) ∗ g ( t ) = ∫ f ( τ ) g ( t − τ ) d τ x ( n ) ∗ h ( n ) = ∑ x ( i ) h ( n − i ) f(t)*g(t) = \int f(\tau)g(t-\tau)\text d\tau\\ x(n)*h(n) = \sum x(i)h(n-i) f(t)g(t)=f(τ)g(tτ)dτx(n)h(n)=x(i)h(ni)

convolve函数

numpy提供了convolve函数,用于卷积计算,其输入参数如下

numpy.convolve(a, v, mode='full')

其中,mode用以调节卷积后的边缘特性,共有三种选择,如果输入的两个卷积对象的维度分别是 N N N M M M,则这三种模式的输出结果为

  • full: 输出维度 N + M − 1 N+M-1 N+M1,其最后一点的信号完全不交叠,故而边缘效应明显。
  • same:输出维度 max ⁡ ( M , N ) \max(M,N) max(M,N),边缘效应仍然可见
  • valid:输出维度 ∣ M − N ∣ |M-N| MN,只返回完全交叠的区域,相当于把存在边缘效应的点都率除掉了

实战

下面实战演示一下三者的区别

import numpy as np
n = np.arange(20)/2
x = np.sin(n)

plt.plot(x)
h = [-2, -1, 0, 1, 2]
for m in ['full', 'same', 'valid']:
    y = np.convolve(x, h, mode=m)
    plt.plot(y, label=m)

plt.legend()
plt.show()

得到图像

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值