SciPy 简易使用教程

  • 1. 符号计算
  • 2. 函数向量化
  • 3. 波形处理scipy.signal
    • 3.1 滤波器
    • 3.2 波峰定位

基于numpy的一个高级模块,为数学,物理,工程等方面的科学计算提供无可替代的支持。
做重要的思想是:符号计算和函数向量化

1. 符号计算

demo: n次多项式的表示,以及计算

from scipy import poly1dp = poly1d([3, 4, 5])       # p(x) = 3x^2 + 4x + 5
print(p)
print(p * p)                # p*p = 9x^4 + 24x^3 + 46x^2 + 40x + 25
print(p.integ(k=6))         # 求p(x)的不定积分,指定常数项为6
print(p.deriv())           # 求p(x)的一阶导数: 6x + 4
print(p([4, 5]))            # 求p(4),p(5)的结果

输出

   2
3 x + 4 x + 54      3      2
9 x + 24 x + 46 x + 40 x + 253     2
1 x + 2 x + 5 x + 66 x + 4
[ 69 100]

2. 函数向量化

demo: 写一个支持向量操作函数

def addsubtract(a, b):# 结合scipy的函数实现向量操作if a > b:return a - belse:return a + b
vec_addsubtract = np.vectorize(addsubtract)
print(vec_addsubtract([0, 3, 6, 9], [1, 3, 5, 7]))
vec_poly1d = np.vectorize(p)
print(vec_poly1d([4, 5]))          # 输出结果和p([4, 5]) 是一致的

3. 波形处理scipy.signal

3.1 滤波器

基本低通、高通、带通、带阻滤波器,关键点是计算Wn。假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除400hz以上频率成分,即截止频率为400hz,则wn=2*400/1000=0.8。Wn=0.8
数字信号Wn=1NT∗21W_n =\frac{\frac{1}{N_T} * 2}{1}Wn​=1NT​1​∗2​ 其中 N_T 为一个周期内的采样点数
滤波器的阶数: 物理上理解,有几个滤波器串联。

from scipy import signal
b, a = signal.butter(8, 0.8, 'lowpass')          #8   为滤波器的阶数
filtedData = signal.filtfilt(b, a, data)         #data为要过滤的信号b, a = signal.butter(8, 0.2, 'highpass')         #高通
b, a = signal.butter(8, [0.2,0.8], 'bandpass')   #带通
b, a = signal.butter(8, [0.2,0.8], 'bandstop')   #带阻

疑问:滤波器的数字实现、频率滤波器和均值滤波器的关系。

参考文档:Python实现信号滤波(基于scipy)

3.2 波峰定位

from scipy.signal import find_peaks
x = [......]     # 波形信号
peaks, _ = find_peaks(x, height=0)                     # 高度大于0的峰
peaks, _ = find_peaks(x, height=(-border, border))       # 高度范围
peaks, _ = find_peaks(x, distance=150)                     # 要求至少距离150个样本的峰
peaks, properties = find_peaks(x, prominence=(None, 0.6))   # 嘈杂信号的识别,突出基线信号0.6 高度的峰
peaks, properties = find_peaks(x, prominence=1, width=20)   # 宽度要求# 配套显示工作
import matplotlib.pyplot as plt
plt.plot(x)
plt.plot(peaks, x[peaks], "x")

突出程度:峰的突出度衡量一个峰从信号的周围基线中突出多少,并定义为峰与其最低轮廓线之间的垂直距离,

参考文档:python scipy signal.find_peaks用法及代码示例

Python模块(7)-SciPy 简易使用教程相关推荐

  1. Python模块(8)-sklearn 简易使用教程

    sklearn 简易使用教程 1.scikit-learn的数据集 2.scikit-learn 的训练和预测 scikit-learn 是在Numpy,SciPy,Matplotlib三个模块上编写 ...

  2. Python模块(1)-Argparse 简易使用教程

    argparse 简易使用教程 1基本函数 2例子程序演示 3常用参数解释 4argparse模块整理的缘起 1基本函数 argparse是Python中用于命令行中进行参数解析的一个模块,可以自动生 ...

  3. python模块(5)-Matplotlib 简易使用教程

    Matplotlib简易使用教程 0.matplotlib的安装 1.导入相关库 2.画布初始化 2.1 隐式创建 2.2 显示创建 2.3 设置画布大小 2.4 plt.figure()常用参数 3 ...

  4. Python模块(2)-Numpy 简易使用教程

    Numpy模块 简易使用教程 1.数组创建 2.数组基本属性-维度.尺寸.数据类型 3.数组访问-索引.切片.迭代 4.数组的算术运算-加减乘除.转置求逆.极大极小 5.通用函数-sin,cos,ex ...

  5. python模块(6)-Pandas 简易使用教程

    Pandas 简易教程 1.Pandas简介 2.创建 2.1创建dataFrame 2.2创建Series 3.dataframe数据访问 3.1 获取一列--列标签 3.2 获取多列--列标签列表 ...

  6. Python模块(3)--PIL 简易使用教程

    PIL模块-用与记 1.图片导入Image.open() 2.图像显示.show() 4.查看图片属性.format,.size,.mode 3.图像格式转换.convert() 4.图像模式&quo ...

  7. python模块:Scipy.optimize.linprog线性规划求解

    目录 一.模块介绍 二.模块源分析与参数解释 三.实例求解 四.参考 一.模块介绍 1.1模块功能 Scipy.optimize是Scipy中一个用于解决数学模型中优化类模型的子包,该子包中又包含了多 ...

  8. python模块之tqdm:简易教程

    python模块------tqdm tqdm可以让你的程序显示一个智能进度表,它可以包装任何可迭代的内容.除了低开销的特点之外,tqdm还使用智能算法来预测剩余时间并跳过不必要的迭代显示,它的开销在 ...

  9. Python 程序设计快速入门简易教程

    Python 程序设计快速入门简易教程 Python语言快速检索 一些需要知道的事 一个简单的Python程序 Python的基本数据类型 Python的基本运算符 Python的常用函数 impor ...

最新文章

  1. 03-spring bean
  2. 三家逐鹿,私有化部署能帮神策数据杀出重围么?| 公司调研
  3. python3安装步骤
  4. Android 性能优化——布局优化
  5. 解决无法删除表,提示被外键约束引用
  6. python3性能还低吗_谁说Python性能差的?-- 让python比awk快 (3)
  7. 2020CCPC绵阳
  8. 用c语言实现循环神经网络,浅谈LSTM循环神经网络
  9. 为什么[]比list()更快?
  10. 华为nova 5全新外观曝光:水滴全面屏设计 边框下巴极窄
  11. Docker新手入门,最全详解看这里!
  12. IDEA打包程序与运行(windows环境)
  13. OpenCV学习——摄像头人脸识别
  14. windows安装配置jdk1.8
  15. HTTP请求头headers
  16. 《Effective C++》读书笔记 条款40:明智而审慎地使用多重继承
  17. Unity UV基于中心点旋转/缩放/位移 Shader
  18. 华为深度Linux系统使用教程,华为笔记本OEM版本Linux系统安装深度商店(deepin-appstore)的方法...
  19. 「万字总结」熬夜总结50个JS的高级知识点,全都会你就是神
  20. 【光电工程实训】物理光学 干涉及衍射实验 偏振现象 波的衍射理论 光的偏振 方晶石

热门文章

  1. std::map用法
  2. VxWorks平台下计算cpu的利用率
  3. android 主线程调用,Android 主线程和线程之间相互发送消息
  4. zabbix华为交换机模板_【教程】思科交换机镜像端口配置实例
  5. 【转】C# HMAC Sha1 生成签字
  6. 一步步编写操作系统 20 x86虚拟bochs一般用法 上
  7. 怎么抓取屏幕截图计算机考试时间,定时抓屏快照(电脑截屏工具)V4.8 最新版
  8. PWN-PRACTICE-CTFSHOW-3
  9. 【机器学习】 - 激活函数与交叉熵Sigmoid, Softmax, binary_crossentropy, categorican_crossentropy区别
  10. 【CodeForces - 789D】Weird journey(思维,图的性质,tricks,有坑)