专栏首页Python小屋一维序列卷积之Python实现

一维序列卷积之Python实现

在数字信号处理中经常会用到卷积计算,例如各种滤波器的设计。两个序列的卷积计算大体需要3步:

1)翻转其中一个序列;

2)移动翻转后的序列,并计算每次移动后两个序列的重叠面积;

3)重复第2步,直至两个序列没有重叠部分。

def conv(lst1, lst2):

'''用来计算两个列表所表示的信号的卷积,返回一个列表'''

result = []

#翻转第一个列表

lst1.reverse()

length1 = len(lst1)

length2 = len(lst2)

#移动翻转后的第一个列表,直到“完全移入”

for i in range(1, length1+1):

t = lst1[length1-i:]

#计算重叠“面积”

v = sum((item1*item2 for item1, item2 in zip(t,lst2)))

result.append(v)

#继续移动翻转后的第一个列表,直到“完全移出”

for i in range(1, length2):

t = lst2[i:]

v = sum((item1*item2 for item1, item2 in zip(lst1,t)))

result.append(v)

return result

print(conv([1, 2, 3], [4, 5]))

当然,上面的代码主要是演示卷积的原理,在真正使用时,可以直接使用Python扩展库numpy和scipy来实现,例如下面的代码:

>>> import numpy as np

>>> import scipy.signal

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

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

>>> scipy.signal.convolve(x, y)

array([ 4, 13, 22, 15])

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-07-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python使用标准库subprocess调用外部程序

    Python标准库subprocess中提供了很多调用外部程序创建子进程的对象,本文重点演示Popen对象的stdin和stdout属性的用法。 假设有一个程...

    Python小屋屋主
  • 详解Python列表推导式

    列表推导式可以使用非常简洁的方式对列表或其他可迭代对象的元素进行遍历和过滤,快速生成满足特定需求的列表,代码具有非常强的可读性,是Python程序开发时应用最多...

    Python小屋屋主
  • Python中提供的各种队列结构

    Python标准库queue提供了LILO队列类Queue、LIFO队列类LifoQueue、优先级队列类PriorityQueue,标准库collection...

    Python小屋屋主
  • Linux下Android构建环境

    用户2929716
  • win8.1 安装unlocker失败

    安装unlocker前需要先下载安装python2.7 修改echo Patching...后的第一句话为

    用户2657851
  • 开车乱打远光灯的人,英伟达自有办法来“治”他

    乱打远光灯这种行为,不仅会让路人和其他司机眼睛感到十分难受,最危险的是还能容易酿成严重的交通事故。因此一直被大家所深恶痛绝。

    量子位
  • 中移动分布式存储超级大单出炉,浪潮等唱主角

    近日,中国移动公布了2019年至2020年分布式块存储产品集中采购招标公告。自2017年以来,中国移动已经组织了两次分布式文件存储集采,本次集采是电信运营商行业...

    大数据在线
  • HBase授权 转

    HBase在不开启授权的情况下,任何账号对HBase集群可以进行任何操作,比如disable table/drop table/major compact等等。

    双面人
  • Go 语言并发编程系列(十)—— sync 包系列:互斥锁和读写锁

    我们前面反复强调,在 Go 语言并发编程中,倡导「使用通信共享内存,不要使用共享内存通信」,而这个通信的媒介就是我们前面花大量篇幅介绍的通道(Channel),...

    学院君
  • 用代码查找包含在SAP CRM appointment里的business partner

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券