[数字信号处理][Python] numpy.gradient()函数的算法实现

先看实例

python 复制代码
import numpy as np
signal = [3,2,1,3,8,10]
grad = np.gradient(signal)
print(grad)

输出结果是
[-1. -1. 0.5 3.5 3.5 2. ]

这个结果是怎么来的呢?

np.gradient 计算信号的数值梯度,也就是信号值的变化率。它使用中心差分法来计算中间点的梯度,并使用前向差分法和后向差分法来计算边界点的梯度。

一、边界点:
g r a d [ 0 ] = s i g n a l [ 1 ] − s i g n a l [ 0 ] = 2 − 3 = − 1 grad[0] = signal[1] - signal[0] = 2 - 3 = -1 grad[0]=signal[1]−signal[0]=2−3=−1
g r a d [ 5 ] = s i g n a l [ 5 ] − s i g n a l [ 4 ] = 10 − 8 = 2 grad[5] = signal[5] - signal[4] = 10-8 = 2 grad[5]=signal[5]−signal[4]=10−8=2

二、中间点:
g r a d [ i ] = s i g n a l [ i + 1 ] − s i g n a l [ i − 1 ] 2 grad[i] =\frac{signal[i+1]-signal[i-1]}{2} grad[i]=2signal[i+1]−signal[i−1],由此可知
g r a d [ 1 ] = s i g n a l [ 2 ] − s i g n a l [ 0 ] 2 = − 1 grad[1] =\frac{signal[2]-signal[0]}{2} = -1 grad[1]=2signal[2]−signal[0]=−1

其他略。

相关推荐
沃洛德.辛肯14 分钟前
PyTorch 的 F.scaled_dot_product_attention 返回Nan
人工智能·pytorch·python
noravinsc26 分钟前
人大金仓数据库 与django结合
数据库·python·django
豌豆花下猫33 分钟前
Python 潮流周刊#102:微软裁员 Faster CPython 团队(摘要)
后端·python·ai
yzx9910131 小时前
Gensim 是一个专为 Python 设计的开源库
开发语言·python·开源
麻雀无能为力1 小时前
python自学笔记2 数据类型
开发语言·笔记·python
Ndmzi1 小时前
matlab与python问题解析
python·matlab
懒大王爱吃狼2 小时前
怎么使用python进行PostgreSQL 数据库连接?
数据库·python·postgresql
猫猫村晨总2 小时前
网络爬虫学习之httpx的使用
爬虫·python·httpx
web150854159352 小时前
Python线性回归:从理论到实践的完整指南
python·机器学习·线性回归
ayiya_Oese2 小时前
[训练和优化] 3. 模型优化
人工智能·python·深度学习·神经网络·机器学习