【数字信号处理】Python离散信号卷积的代码实现/时域直接法/列表法/信号与系统
Python离散信号卷积的代码实现(时域直接法)
1、卷积
卷积是一种积分变换的数学方法,在许多方面得到了广泛应用。卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是离散的数组/数列,则卷积的结果可表达为:
2、时域直接法(列表法)实现卷积
例如:y(n) = x(n) * h(n) 中,将h(n)翻转后,按照公式的顺序,一个一个数进行相乘,叠加,后得出y(n)的值,逐个计算y(n)直到x(i)与h(n-i)再无交集。y(n)的长度满足 len(y) == len(x) + len(h) - 1。时间复杂度为n^2
3、代码实现
def convolution(a,b):c=[]i = 0 #卷积后的列表下标j = 0 #翻转列表下标k = 0 #正序列表下标step = 0 #长度差num = 0 #卷积值b.reverse()while i<=(len(a)+len(b)-1)-1:k = iif i > len(a) - 1:k = len(a) - 1step += 1while j<=min(i, (len(a)-1), (len(b)-1)-step):num += a[k]*b[j+step]j+=1k-=1c.append(num)num = 0j = 0i+=1return c
4、结果对比
与numpy模块的卷积函数(时间复杂度为nlogn)进行结果比较:
import numpy as np
a = [1,2,3,4,5,6,7]
b = [2,4,6,8,10,11,21,31,41]
c = convolution(a,b)
d = np.convolve(a,b)
结果:
[41, 113, 206, 310, 424, 546, 674, 478, 323, 217, 170, 120, 76, 40, 14]
[ 41 113 206 310 424 546 674 478 323 217 170 120 76 40 14]
【数字信号处理】Python离散信号卷积的代码实现/时域直接法/列表法/信号与系统相关推荐
- 数字信号处理python代码(陈后金老师书籍第一章)
数字信号处理方面的python代码太少.鉴于python语言的流行,以及matlab对中国的不友好,准备将数字信号处理(陈后金老师版本)里的matlab代码全部python化. ''' x[k] = ...
- 【数字信号处理】离散信号与系统分析
一.常用的序列 1.单位脉冲序列 单位脉冲序列是指仅仅在某一时刻有一个单位幅度的脉冲响应. 任意序列都可以用单位脉冲序列表示. 2.单位阶跃序列 单位阶跃序列是指从某一时刻起,以后所有的序列都是单位幅 ...
- 数字信号处理——Python实现快速傅里叶变换FFT
文章首发于我的个人博客 1.FFT背景 快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的快速算法,它是根据离散傅里叶的奇.偶.虚.实等特性,在DFT的基础上进行改进获得的.它对傅里叶变换的理论没有 ...
- 数字信号处理相关1(卷积(convolution)的几种解释)
来自:https://blog.csdn.net/bitcarmanlee/article/details/54729807 来自:https://www.zhihu.com/question/222 ...
- 数字信号处理|Matlab设计巴特沃斯低通滤波器(冲激响应不变法和双线性变换法)
一.前言 1. 设计流程 2.系统频率响应 2.1频响图 系统函数 H 是一个复数,其图谱分为:幅度谱.相位谱 幅度谱 x轴:模拟频率f(数字频率w转化来)[单位:赫兹Hz] y轴:|H1|幅度[一般 ...
- python饮料购买_python - 饮料机,if elif与列表法
import time import os o1 = "超火" o2 = "火" o3 = "温" o4 = "凉" o ...
- 数字信号处理 --- 用离散傅里叶变换(循环卷积)实现线性卷积(个人学习笔记)
时域的循环卷积等于频域的离散傅里叶变换,离散傅里叶变换DFT是离散傅里叶级数DFS的一个周期,离散傅里叶级数DFS是对连续时间傅里叶变换CTFT的采样 离散傅里叶级数DFS 周期为10的方波信号的傅里 ...
- 数字信号处理python代码(陈后金老师书籍第二章)
''' 两种卷积计算方式对比: 1.调用库函数 2.先计算两者的傅里叶变换,再相乘,再求逆变换 '''import matplotlib.pyplot as plt from scipy import ...
- python回声程序echo 一行代码_回声状态网络法echo state network代码(简单)
[实例简介] esn作者在官网的简单版代码,给英文不好的同学拿过来,免得再去找地方下载 [实例截图] [核心代码] ESN_Toolbox └── ESN_Toolbox ├── analogToUn ...
最新文章
- Linux上实现ssh免密码登陆远程服务器
- 利用css对input[type=file] 样式进行美化,input上传按钮美化
- 自己写的一个复杂查询
- 获取iOS任意线程调用堆栈(五)完整实现:BSBacktraceLogger
- mac打开软件显示没有权限不能打开
- 高校学子如何免费上网?
- 美啦:从工具到美妆共享经济平台的豹变
- python地理处理包——Shapely介绍及用户手册
- 人工智能的隐私保护探讨
- 如何实现用户id生成一个唯一邀请码
- 虚拟机中输入ifconfig不显示ip地址,如何解决
- [渝粤教育] 西南科技大学 成本会计 在线考试复习资料
- GoWithMi,一个可以买卖地块资源的分布式地图生态
- 插件3-滑动验证(geetest)
- 关于以w3school为首的那些网址,很迷
- 《春夜洛城闻笛 / 春夜洛阳城闻笛》古诗鉴赏
- maven离线安装easyexcel要把easyexcel内部依赖的jar包一并导入
- 中软国际实训全记录——第三天
- 脑壳清痛之---总结thinkphp5 怎么用odbc连接sql2000
- Computer Security Principles and Practice-计算机安全原理与实践