使用python写了一个测试麦克风阵列传递函数的demo,有需要的自取。该代码使用了第三方库ThinkDSP。

1. 传递函数

首先解释下什么是传递函数:

把具有线性特性的对象的输入与输出间的关系,用一个函数(输出波形的拉普拉斯变换与输入波形的拉普拉斯变换之比)来表示的,称为传递函数。

在麦克风阵列测试中,传递函数的输入和输出通常指标准测试信号和各麦克风接收到的信号。在音频信号中,传递函数通常指频域范围,所以需要对时域信号进行傅立叶变换(FFT)。

2. python中的传递函数

在scipy库中有一个函数类signal,其中有一个函数TransferFunction,该函数可用于计算两个变量之间的传递函数。

具体使用方法参考以下官方解释:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.TransferFunction.html

3. python实现

需要的库:

import thinkdspimport waveimport numpy as npimport matplotlib.pyplot as pltfrom scipy import signal

思路:

生成两个chirp信号s1和s2,把s1当作输入信号,把s2当作从某个mic获得的输出信号。两个信号仅振幅有差异,s2的振幅是s1的2倍。所以根据信号,传递函数=输出/输入,各频率段的传递函数数值应该为2。

第一步,生成两个信号。信号频率范围100Hz~8kHz,采样率16kHz。傅立叶变换后的矩阵元素是复数形式,而传递函数计算需要取实部。

s1 = thinkdsp.ExpoChirp(100,8000,1) #振幅为1wav1 = s1.make_wave(1,0,16000)w1 = wav1.make_spectrum()fs = w1.fshs1 = w1.ampss2 = thinkdsp.ExpoChirp(100,8000,2) #振幅为2wav2 = s2.make_wave(1,0,16000)w2 = wav2.make_spectrum()hs2 = w2.amps

第二步,计算传递函数。

s12 = signal.TransferFunction(hs2,hs1)plt.figure('TransferFunction')plt.plot(fs,s12.num/s12.den)plt.ylim(0,3)plt.show()print('finish')

生成图像,整个频率段的 「输出/输入」传递函数值均为2,符合预设。

注意,传递函数并不是简单的 输出/输入,其中做的信号处理都已经在函数TransferFunction中完成,可在参考文档中自行研究。

传递函数_使用python计算麦克风阵列信号的传递函数相关推荐

  1. 麦克风声源定位原理_一种利用麦克风阵列进行声源定位的方法与流程

    本发明涉及计算机信号处理领域,具体涉及一种用麦克风阵列时延估计定位声源的方法. 背景技术: 20世纪80年代以来,麦克风阵列信号处理技术得到迅猛的发展,并在雷达.声纳及通信中得到广泛的应用.这种阵列信 ...

  2. 用python计算圆的面积_用Python计算大圆距

    用python计算圆的面积 The shortest distance between two locations on the surface of Earth (or any planet) is ...

  3. python ks值计算_利用Python计算KS的实例详解

    在金融领域中,我们的y值和预测得到的违约概率刚好是两个分布未知的两个分布.好的信用风控模型一般从准确性.稳定性和可解释性来评估模型.sOf免费资源网 一般来说.好人样本的分布同坏人样本的分布应该是有很 ...

  4. python里的π怎么调用_用python计算圆周率π

    用python计算圆周率π 一.要求 1.要起义能计算到圆周率后面越多位越好. 2.用进度条显示计算的进度,能给出越多种进度条越好. 3.要求给出圆周率π的具体公式或者算法说明. 二.算法 1.马青公 ...

  5. python分箱统计个数_使用python 计算百分位数实现数据分箱代码

    对于百分位数,相信大家都比较熟悉,以下解释源引自百度百科. 百分位数,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数.可表示为:一组n个观测值 ...

  6. python圆的半径计算圆的周长列表_用python计算圆的周长

    Python编程题:输入圆半径,输出圆面积 R=eval(input("请输入圆的半径:")) pi=3.14 S=pi*R**2 print("圆的面积是:{}&quo ...

  7. 用python计算圆周率_用python计算圆周率π

    原博文 2020-03-22 15:32 − 用python计算圆周率π 一.要求 1.要起义能计算到圆周率后面越多位越好. 2.用进度条显示计算的进度,能给出越多种进度条越好. 3.要求给出圆周率π ...

  8. python计算文件md5值_用python计算文件的MD5值

    md5是一种常见不可逆加密算法,使用简单,计算速度快,在很多场景下都会用到,比如:给用户上传的文件命名,数据库中保存的用户密码,下载文件后检验文件是否正确等.下面讲解在python中如何使用md5算法 ...

  9. python方差的计算公式_使用Python计算方差协方差相关系数

    使用Python计算方差,协方差和相关系数 数学定义 期望 设随机变量X只取有限个可能值a_i (i=0, 1, ..., m),其概率分布为P (X = a_i) = p_i. 则X的数学期望,记为 ...

最新文章

  1. jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]
  2. 【概率论】1-4:事件的的并集(Union of Events and Statical Swindles)
  3. AOP 中必须明白的概念-切入点(Pointcut)
  4. asp.net webform设计思路的思考
  5. 配置配置DruidDataSource
  6. 心跳监测器 IHeartBeatChecker
  7. 这就是神经网络 7:深度学习-目标检测-超详细图解Faster R-CNN
  8. 视频翻译字幕的软件哪个好?看完你就知道了
  9. PS无痕修改文字技巧
  10. 计算机网络 子网掩码
  11. 苹果(APPLE)开发者账号说明及注册流程(99美元公司版/个人版及299美元企业版)
  12. Android 10.0在电话拨号盘(Dialer app中)通过暗码进入工厂测试模式
  13. WPS如何并排放置两张图片_动图演示如何制作XRD叠图与PDF卡线图
  14. 11月更新!一口气上线20+新功能,3D架构拓扑图更具趣味性~
  15. 3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器。在下面表中的“动作”一栏中,表示先后发送了4个帧。假定在开始时,以太网交换 机的交换表是空的。试把该表中其他的栏目都填写
  16. ajax请求或者计算造成浏览器崩溃解决办法
  17. C语言:根据集合元素有互异性,将两个集合并集(一种方法之一)
  18. 结构化数据和非结构化数据的提取【Python篇】
  19. 2021年腾讯云618活动最新优惠攻略
  20. [Java基础]--Java GC工作原理

热门文章

  1. 【招聘(南京)】南京纳龙科技有限公司招高级.net开发工程师
  2. 微软宣布 Visual Studio 2019 将于4月2日正式发布
  3. Blazor 0.5.0 升级及新特性介绍
  4. .NET Core微服务之服务间的调用方式(REST and RPC)
  5. .NetCore+Jexus代理+Redis模拟秒杀商品活动
  6. 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
  7. 构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识
  8. java 检测ip网速_java心跳测网速Demo
  9. [转]【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!
  10. C语言九十六之实现经典的字符串反转(通过指针或下标操作)