scipy一维卷积函数convolve1d

文章目录

基本原理

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

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(n−i)

convolve1d函数

scipy的ndimage模块提供了convolve1d函数,顾名思义用于1维卷积计算,其输入参数如下

python 复制代码
scipy.ndimage.convolve1d(input, weights, axis=-1, output=None, mode='reflect', cval=0.0, origin=0)

其中,mode用以调节卷积后边缘填充的数值,具体情况如下表所示,其中k即为cval参数。

左侧填充 数据 右侧填充
reflect d , c , b , a d, c, b, a d,c,b,a a , b , c , d a, b, c, d a,b,c,d d , c , b , a d, c, b, a d,c,b,a
constant k , k , k , k k, k, k, k k,k,k,k a , b , c , d a, b, c, d a,b,c,d k , k , k , k k, k, k, k k,k,k,k
nearest a , a , a , a a, a, a, a a,a,a,a a , b , c , d a, b, c, d a,b,c,d d , d , d , d d, d, d, d d,d,d,d
mirror d , c , b d, c, b d,c,b a , b , c , d a, b, c, d a,b,c,d c , b , a c, b, a c,b,a
wrap a , b , c , d a, b, c, d a,b,c,d a , b , c , d a, b, c, d a,b,c,d a , b , c , d a, b, c, d a,b,c,d

实战

下面实战演示一下不同模式的填充区别

python 复制代码
import numpy as np
n = np.arange(20)/2
x = np.sin(n)
h = [-2, -1, 0, 1, 2]

plt.plot(x)
plt.plot(y, label=m, marker='.', color='r')
for m in ["reflect", "constant", "nearest", "mirror", "wrap",]:
    y = sn.convolve1d(x, h, mode=m, cval=2)
    plt.plot(y, label=m)

plt.legend()
plt.grid()
plt.show()

得到图像

相关推荐
宏辉4 天前
【数学建模】 数据处理与拟合模型
python·数学建模·numpy·scikit-learn·matplotlib·scipy
00000cj4 天前
CoAtNet(NeurIPS 2023, Google)论文解读
人工智能·深度学习·计算机视觉·transformer·卷积
西西弗Sisyphus6 天前
卷积层的输出
深度学习·神经网络·计算机视觉·卷积
dog25011 天前
拉普拉斯变换与卷积
卷积
逼子格1 个月前
31、matlab卷积运算:卷积运算、二维卷积、N维卷积
深度学习·神经网络·matlab·信号处理·卷积
GYPEXLIN1 个月前
Advantages of high pressure cleaners
python·scrapy·plotly·beautifulsoup·web3.py·scipy·gunicorn
快剑1 个月前
数字滤波器和模拟滤波器(一)
信号处理·scipy
qaxwsc_1314A1 个月前
ANSYS编程深度解析:从入门到精通的全方位探索
python·pygame·scipy
qaxwsc_1314A1 个月前
web前端框架探秘:深度剖析四大核心要素
python·beautifulsoup·scipy
不称职的程序员❦2 个月前
JetBrains PhpStorm v2024.1 安装教程 (PHP集成开发IDE)
ide·python·pycharm·pip·phpstorm·scipy