对于multitaper多窗口谱估计的理解及步骤 (对应matlab中pmtm函数)谱减法相关
对于多窗口谱估计的理解
0. 缘起
在语音增强通过改进的谱减法进行谱估计时,使用多窗谱估计法要优于我们一般遇到的周期法谱估计,中文相关的资料不多,这里分享一下我学习理解到的内容。
1. PMTM 含义
- P: PSD (Power spectral density)
- MTM: Multi- Taper Method
2. 与我们常用的周期谱估计的区别
- 正常的周期法: 频率估计是取帧,一帧加窗(一般汉宁窗)然后做频率变换,然后将每帧的频谱做一个平均
- 多窗谱法:频率估计是取帧,一帧分别与多窗(一般为几个k不一样的slepian窗)中的每个窗相乘,然后做频率变换, 将每个窗频率变换的结果 相加得到最终的一帧频谱结果
PMTM 中常用的窗函数:
Slepian
Sine
k不同,窗口不同,他们是正交的。即 向量积为0.
3. 计算过程
step 1: 取一帧数据,分别与窗相乘,得多几条加窗后的数据
step2: 针对每条数据(同一帧,不同加窗),进行 FFT变换
step3: 将这几条数据(同一帧,不同加窗)的FFT结果相加后平均,得多合成的一帧频谱变换
overview
5. 多窗/单窗谱估计结果对比
多窗谱估计得到的结果没有一般的周期法用的单窗谱估计得到的结果那么锐利
6. 程序如何生成多窗 - 以sin为例
6.1 生成正交窗的公式代码
\]
N为数据的点数
figure
N = 1000;
nw = 3;
ns = 2*(nw)-1;
n = 1:N;
k = 1:ns;
sine_tprs_array = sqrt(2/(N+1))*sin(pi*n'*k/(N+1)); % 生成多窗口函数
% g_1(n)= sqrt(2/(1000+1))*sin(pi*(1:1000)'*1/(1000+1))
% g_2(n)= sqrt(2/(1000+1))*sin(pi*(1:1000)'*2/(1000+1))
% g_3(n)= sqrt(2/(1000+1))*sin(pi*(1:1000)'*3/(1000+1))
% g_4(n)= sqrt(2/(1000+1))*sin(pi*(1:1000)'*3/(1000+1))
% g_5(n)= sqrt(2/(1000+1))*sin(pi*(1:1000)'*3/(1000+1))
lbs = "Sine";
% subplot(2,1,kj)
for kj= 1:5
subplot(5,1,kj)
plot(sine_tprs_array(:,kj))
title(lbs)
legend(append('k = ',string(kj)), ...
'Orientation','horizontal','Location','south')
legend('boxoff')
ylim([-0.09 0.07])
end
6.2 计算是否符合正交
sine_tprs_array = tprs(:,:,2);
rslt = zeros([5,5]);
for i =1:5
for j = 1:5
rslt(i,j) = sine_tprs_array(:,i)'*sine_tprs_array(:,j); % 计算向量积,检查是否正交
end
end`
>> rslt
rslt =
1.0000 0.0000 -0.0000 -0.0000 0.0000
0.0000 1.0000 -0.0000 0.0000 -0.0000
-0.0000 -0.0000 1.0000 -0.0000 -0.0000
-0.0000 0.0000 -0.0000 1.0000 -0.0000
0.0000 -0.0000 -0.0000 -0.0000 1.0000
% 可见这几个窗函数都是正交的。
7. Reference
- Multitaper power spectral density estimate - MATLAB pmtm
- 频谱分析中如何理解taper? - 知乎
- [数字信号中功率谱估计相关方法简介及MATLAB实现_matlab功率谱
- The multi-taper method - YouTube
对于multitaper多窗口谱估计的理解及步骤 (对应matlab中pmtm函数)谱减法相关的更多相关文章
- Matlab 中 arburg 函数的理解与实际使用方法
1. 理解 1.1 Matlab 帮助: a = arburg(x,p)返回与输入数组x的p阶模型相对应的归一化自回归(AR)参数. 如果x是一个向量,则输出数组a是一个行向量. 如果x是矩阵,则参数 ...
- 深入理解 JavaScript 中的函数
JavaScript函数也具有这些特性,但它们不仅仅是常规函数.JavaScript函数是对象.你可以查看我曾经写的关于JavaScript对象的文章,里面我提到几乎JavaScript中的所有一切都 ...
- 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)
关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录) 作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...
- .NET抽象工厂模式微理解--教你在项目中实现抽象工厂
.NET抽象工厂模式微理解--教你在项目中实现抽象工厂 最近在学习MVC,对于MVC里面的一些项目上的东西都和抽象模式有关,今天就微说明一下个人对于抽象工厂模式的理解,以方便学习MVC及工厂模式相关的 ...
- 深入理解C指针之三:指针和函数
原文:深入理解C指针之三:指针和函数 理解函数和指针的结合使用,需要理解程序栈.大部分现代的块结构语言,比如C,都用到了程序栈来支持函数的运行.调用函数时,会创建函数的栈帧并将其推到程序栈上.函数返回 ...
- node.js 中回调函数callback(转载),说的很清楚,看一遍就理解了
最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(fu ...
- 对NumPy中dot()函数的理解
今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...
- 运用《深入理解Java虚拟机》书中知识解决实际问题
前言 以前看别人博客说看完<深入理解Java虚拟机>这本书并没有让自己的编程水平提高多少,不过却大大提高了自己的装逼水平.其实,我倒不这么认为,至少在我看完一遍这本书后,有一种醍醐灌顶的感 ...
- SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
随机推荐
- 根据类拼凑成url参数
/// <summary> /// 根据类拼凑成url参数 /// </summary> /// <typeparam name ...
- Nginx系列(10)- Nginx配置文件详解
nginx文件结构 ... #全局块 events { #events块 ... } http #http块 { ... #http全局块 server #server块 { ... #server全 ...
- 有哪些浏览器还支持flash?
Flash是大名鼎鼎的全家桶公司Adobe设计的一款网页动画软件,早期的动态网页基本都是基于Flash开发的.但是后来不断爆出关于Flash的安全漏洞和运行效率问题,虽然Adobe公司一直在尝试解决, ...
- php stream 流封装协议
http://php.net/manual/wrappers.php 过程: 1. 开始通信 2. 读取数据 3. 写入数据 4. 结束通信 usage: * 读写文件系统 <?php $han ...
- Vue 初学
Vue 的基本代码: 概念简介:Vue.js 是目前最火的一个前端框架,只关注视图层,主要负责MVC中的V这一层 MVC 是后端的分层开发概念: MVVM是前端视图层的概念, ...
- Centos7.6安装python3.6.8
yum -y install bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel libffi-devel tk-devel ...
- null与undefined到底有啥区别?
话不多说,直接先上结论: null 和 undefined 基本相同,只有细微差别 null 是表示缺少的标识,指示变量未指向任何对象,转为数值为 0 undefined 表示 "缺少值&q ...
- Python异常代码含义对照表
Python常见的异常提示及含义对照表如下: 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是 ...
- HPE ProLiant 系列服务器Microsoft Windows 2008 R2系统下网卡绑定方法
HPE Network Configuration Utility(以下简称NCU) 网卡绑定工具,用户可以通过该工具很方便的把服务器的多个网卡捆绑到一起以达到容错和增加可用带宽的目的. 1.打开NC ...
- SAE助力南瓜电影7天内全面Severless
作者:李刚(寻如),阿里云解决方案架构师 南瓜电影APP是国内领先的专注于影视精品化运营的垂直类视频产品,在移动互联网.IPTV.OTT等客户端,面向广大中产阶级精英群体,提供有异于院线及其他视频平台 ...