scipy的signal模块经常用于信号处理,卷积、傅里叶变换、各种滤波、差值算法等。

*两个一维信号卷积

>>> import numpy as np

>>> x=np.array([1,2,3])

>>> h=np.array([4,5,6])

>>> import scipy.signal

>>> scipy.signal.convolve(x,h) #卷积运算

array([ 4, 13, 28, 27, 18])

卷积运算大致可以分成3步,首先先翻转,让两个信号列反过来,如上面就是1,2,3和6,5,4。然后作平移,6,5,4最开始在1,2,3的左边,没有重叠,现在向右移动,4和1就重叠了。对于重叠的部分,作乘积求和。也就是1x4得到第一个结果1,然后再移动后5x1+4x2得到第二个结果13以此类推。

卷积运算可以用来做大整数的乘法(数组表示数的乘法),比如在上面的例子中,要求123乘以456,可以先得到它的卷积序列,然后从后往前,18将8保留,进位1给27;然后27变成28,把8保留进位2给28;然后28变成30,把0保留进位3给13;然后13变成16,把6保留进位1给4;4变成5即是最高位。也就是乘法的结果是56088。

*对白噪声卷积

>>> import numpy as np

>>> from scipy import signal

>>> import matplotlib.pyplot as plt

>>> sig=np.random.randn(1000) #生成随机数

>>> autocorr=signal.fftconvolve(sig,sig[::-1],mode='full') #fft算法实现卷积

>>> fig,(ax_orig,ax_mag)=plt.subplots(2,1) #建立两行一列图形

>>> ax_orig.plot(sig) #在第一行把原始的随机数序列sig画出来

[]

>>> ax_orig.set_title('White noise') #设置标题'白噪声'

>>> ax_mag.plot(np.arange(-len(sig)+1,len(sig)),autocorr) #卷积后的图像

[]

>>> ax_mag.set_title('Autocorrelation') #设置标题

>>> fig.tight_layout() #此句可以防止图像重叠

>>> fig.show() #显示图像

fftconvolve只是用fft算法(快速傅立叶变换)实现的卷积,其结果应当和普通的convolve一样。

*二维图像卷积运算

>>> import numpy as np

>>> from scipy import signal

>>> from scipy import misc

>>> import matplotlib.pyplot as plt

>>> face=misc.face(gray=True) #创建一个灰度图像

>>> scharr=np.array([[-3-3j,0-10j,+3-3j],

[-10+0j,0+0j,+10+0j],

[-3+3j,0+10j,+3+3j]]) #设置一个特殊的卷积和

>>> grad=signal.convolve2d(face,scharr,boundary='symm',mode='same') #把图像的face数组和设计好的卷积和作二维卷积运算,设计边界处理方式为symm

>>> fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,6)) #建立1行2列的图fig

>>> ax1.imshow(face,cmap='gray') #显示原始的图

>>> ax1.set_axis_off() #不显示坐标轴

>>> ax2.imshow(np.absolute(grad),cmap='gray') #显示卷积后的图

>>> ax2.set_axis_off() #不显示坐标轴

>>> fig.show() #显示绘制好的画布

二维的卷积需要用上面的signal.convolve2d()。

之所以要对卷积后的图像数组grad作np.absolute()求绝对值运算是因为灰度图像的值都是正值,没有负的,为了防止出现负值所以才这样做。

二维的卷积运算还有一种函数,是signal.sepfir2d(),它可以传入三个参数,后两个参数指定行和列的卷积和(两个方向上的卷积是可以不同的,分别指定卷积和序列)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2019-09-15

python符号运算卷积_python scipy卷积运算的实现方法相关推荐

  1. python卷积计算_python scipy卷积运算的实现方法

    scipy的signal模块经常用于信号处理,卷积.傅里叶变换.各种滤波.差值算法等. *两个一维信号卷积 >>> import numpy as np >>> x ...

  2. python精确有理数实验_python之有理数运算Rational类

    python中可以做的数学运算,仅局限在了基本数据类型int.float.因为我们前面学过了特殊方法,所以我们现在也可以进行有理数运算.矩阵运算,今天我们就先讲解有理数运算,矩阵运算与有理数运算方法基 ...

  3. python整数格式化表达式_Python字符串格式化表达式和格式化方法

    Python格式化字符串由两种方式可以选择:一种是格式化表达式(Formatting Expression),一种是格式化方法(Formatting Method).其中格式化表达式在全Python版 ...

  4. python实时监控文件大小_python实现实时监控文件的方法

    在业务稳定性要求比较高的情况下,运维为能及时发现问题,有时需要对应用程序的日志进行实时分析,当符合某个条件时就立刻报警,而不是被动等待出问题后去解决,比如要监控nginx的$request_time和 ...

  5. python list元素合并_python list 合并连接字符串的方法

    python list 合并连接字符串的方法 更新时间:2013年03月09日 22:02:18 作者: python 列表合并字符串,我们一般会用到字符串的join方法来操作.下面通过代码的形式,详 ...

  6. python 接收外部参数_python 接收处理外带的参数方法

    python 接收处理外带的参数方法 在执行python 代码的时候,有时候需要传递外面的参数进行处理 这个该怎么实现呢? 需要一个模块 from sys import argv 当然也可以直接只导入 ...

  7. python加密与解密_Python字符串加密与解密的方法总结

    python对字符串做加密解密处理,大致有三种方法:base64,win32com.client和自定义加密解密算法,最安全可靠的方式,建议是自写加密解密算法. 1,使用base64: 代码示例: # ...

  8. python网站开发换行_python实现换行写代码的方法

    python实现换行写代码的方法 发布时间:2020-07-02 16:34:06 来源:亿速云 阅读:257 这篇文章运用简单易懂的例子给大家介绍python实现换行写代码的方法,代码非常详细,感兴 ...

  9. python 长整型_Python整型运算之布尔型、标准整型、长整型操作示例

    本文实例讲述了Python整型运算之布尔型.标准整型.长整型操作.分享给大家供大家参考,具体如下: #coding=utf8 def integerType(): ''''' 布尔型: 该值的取值范围 ...

最新文章

  1. 拼多多程序员:因为看到同事被抬上救护车,我被开除了!
  2. 机器学习算法基础——逻辑回归
  3. python打卡记录去重_Python笔记记录
  4. SAP Shipping address页面点了continue后的网络请求
  5. 北美KubeCon新风,正把K8S魔力带向边缘计算
  6. python requests get post_python+requests进行get、post方法接口测试
  7. 融创上海:从营销切入,建立自上而下的数据平台,实现数据应用
  8. 最简单代码ASP.NET开源QQ登陆for Oauth2.0
  9. 面试问php学得怎么样,php面试常问的问题及回答
  10. 面试微软等公司必备的书
  11. Qt 学习之路 :Qt 线程相关类
  12. 0基础学python做什么工作好-写给0基础小白:Python能干什么?就业前景好不好?怎么开始学?...
  13. J - R u really ready?(CCRC 18)动态规划
  14. 三大开源bi工具_Power BI与同类工具对比,行业应用该选谁?
  15. 深度学习之CNN宫颈癌预测
  16. ff14服务器建信号,《FF14》服务器人口平均化公告 陆行鸟区关闭角色创建
  17. c++计算一维数组中的最大元素
  18. 各种标点符号的英文怎么念
  19. python中md5加密的实现(hashlib)
  20. 发那科机器人没有码垛指令_FANUC 机器人码垛编程详细讲解

热门文章

  1. 京微齐力:基于P1P060的OLED动态显示(温湿度实时数据)
  2. 支付宝道歉,承认抄了微信小程序文档;谷歌全新 AI 去水印算法 全自动消除水印...
  3. Google Drive共享云端硬盘转存
  4. Latex数学公式-求和符号上下限的限制
  5. Form表单, 4种常见的表单提交方式
  6. java和Vue前后端RSA对称加密
  7. 网狐荣耀6701,6801(系列十五)最后总结
  8. java logbook_关于java.util.NoSuchElementException错误的一则例子
  9. 学习编程推荐软件,网站
  10. 未来的银行只是有银行牌照的技术公司