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()

得到图像

相关推荐
雨洛lhw12 小时前
卷积运算全解析:从原理到MATLAB实现
数字信号处理·卷积
MoRanzhi120316 天前
SciPy傅里叶变换与信号处理教程:数学原理与Python实现
python·机器学习·数学建模·数据分析·信号处理·傅里叶分析·scipy
小幸福52018 天前
用Python实现自动化文章标题生成的最佳实践
scipy
万粉变现经纪人20 天前
如何解决 pip install -r requirements.txt 无效可编辑项 ‘e .‘(-e 拼写错误)问题
开发语言·python·r语言·beautifulsoup·pandas·pip·scipy
10岁的博客21 天前
PyCharm一键安装SciPy全攻略
ide·pycharm·scipy
skywalk816322 天前
以前的计算集群:Beowulf集群(贝奥武夫集群)
科学计算
胡耀超1 个月前
音频降噪技术:从原理到工具的完整指南(scipy librosa noisereduce soundfile pedalboard)
音视频·音频·scipy·降噪·soundfile·noisereduce·pedalboard
万粉变现经纪人1 个月前
如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘flax’ 问题
selenium·flask·beautifulsoup·numpy·scikit-learn·pip·scipy
MoRanzhi12031 个月前
基于 SciPy 的矩阵运算与线性代数应用详解
人工智能·python·线性代数·算法·数学建模·矩阵·scipy
万粉变现经纪人1 个月前
如何解决pip安装报错ModuleNotFoundError: No module named ‘cuml’问题
python·scrapy·beautifulsoup·pandas·ai编程·pip·scipy