作者:桂。

时间:2017-06-03  15:06:37

链接:http://www.cnblogs.com/xingshansi/p/6937635.html

原文链接:http://pan.baidu.com/s/1pKOYuiJ


前言

本文的算法就是在阵列信号增强中非常经典的Frost's Algorithm。上个世纪70年代的技术了,梳理一下该算法的思路。

一、理论框架

首先交代理论模型。噪声为加性噪声:

X为带噪信号,L为理想信号,N为噪声信号,目的是希望利用一组滤波器,实现特定信号的增强(Enhancement).

假设有M个麦克风,对应滤波器的抽头系数为J:

写成向量的形式就是:

MVDR通常是按频点处理,以对第k个频点的处理为例:滤波信号可以表示为

其实框架就是Delay and sum,不同的是权重W不再是均分分布,而是通过最小方差找出最优组合,这就定义了准则函数:

这是一个约束问题,可以借助拉格朗日乘子法求解:

从而得出理想的输出:

例如希望减少noise的时候,原信号保持不变:

这样完成了理论框架的搭建:模型建立→准则函数定义→目标参数求解。

接下来就是落地的问题,即如何将理论模型与实际的工程应用结合起来

二、实现思路

  A-初步实现

  首先是Rxx,它应该是一个先验知识priori:

它是随机信号的均值,实际应用中通常是不知道的,我们只有观测信号。因此通常时间换空间,在平稳遍历的基础上用R = 1/T (XXT)来近似表达,这样一来实际的W就可以求解,从而完成了理论的落地。

  B-改进思路

  这样的R通常是较大的,W的求解涉及到矩阵求逆的问题,运算速度较慢。最优解的求解,一般有最小二乘和梯度下降两个思路。矩阵求逆通常对应最小二乘思路,直接得出最优解,考虑到运算速度,一个直观的思路就是:利用梯度下降的思想。而对于均方意义下的准则函数,梯度是无法求解的,但基于遍历性的假设,可以利用不同时刻的样本进行近似梯度求解,这也就是自适应滤波的思路。梯度下降从样本量的角度来讲,有两个基本思路:随机梯度下降、批量梯度下降,这里以随机梯度下降为例(SGD).梯度下降从下降方式来讲,又有很多分支:一阶梯度下降、二阶梯度下降(Newton-Rapson)等。对于含有约束条件的梯度下降,常用的思路是:投影梯度下降法。文中利用拉格朗日乘子法将含约束的问题转化为无约束问题:

对应的梯度下降:

其中λ为:

从而梯度下降改写为

这样一来只有关于C的求逆,这是可以事先求解并固定不变的。定义:

迭代形式简化为

给出完成的梯度下降法思路(初始化+迭代):

至此,速度问题也得以优化,完成了整个MVDR的落地工作。注意到一点:μ作为迭代步长,需要人为给定。给的合适,收敛较好;给的不理想,收敛太慢甚至发散。

  C-迭代步长μ的选取

细节不罗列了,需要说明的是分析是基于随机过程的均值。实际LMS应用中的μ并不完全与它吻合。

首先考虑平稳噪声的场景,需要满足:

其次考虑非平稳噪声的场景,需要满足:

具体推导看原文吧,实际应用中由于场景不同,μ的设定更多的依靠工程经验,这个单靠理论是行不通的。

参考

  • Frost, Otis Lamont. "An algorithm for linearly constrained adaptive array processing." Proceedings of the IEEE 60.8 (1972): 926-935.

【论文:麦克风阵列增强】An Algorithm For Linearly Constrained Adaptive Array Processing的更多相关文章

  1. 【论文:麦克风阵列增强】An alternative approach to linearly constrained adaptive beamforming

    作者:桂. 时间:2017-06-03  21:46:59 链接:http://www.cnblogs.com/xingshansi/p/6937259.html 原文下载:http://pan.ba ...

  2. 【论文:麦克风阵列增强】Microphone Array Post-Filtering For Non-Stationary Noise Suppression

    作者:桂. 时间:2017-06-08  08:01:41 链接:http://www.cnblogs.com/xingshansi/p/6957027.html 原文链接:http://pan.ba ...

  3. 【麦克风阵列增强】Delay and sum beamforming

    作者:桂. 时间:2017-06-03  15:40:33 链接:http://www.cnblogs.com/xingshansi/p/6937576.html 前言 本文主要记录麦克风阵列的几个基 ...

  4. 【论文:麦克风阵列增强】Signal Enhancement Using Beamforming and Nonstationarity with Applications to Speech

    作者:桂. 时间:2017-06-06 13:25:58 链接:http://www.cnblogs.com/xingshansi/p/6943833.html 论文原文:http://pan.bai ...

  5. 【论文:麦克风阵列增强】Speech Enhancement Based on the General Transfer Function GSC and Postfiltering

    作者:桂. 时间:2017-06-06  16:10:47 链接:http://www.cnblogs.com/xingshansi/p/6951494.html 原文链接:http://pan.ba ...

  6. 基于麦克风阵列的声源定位算法之GCC-PHAT

    目前基于麦克风阵列的声源定位方法大致可以分为三类:基于最大输出功率的可控波束形成技术.基于高分辨率谱图估计技术和基于声音时间差(time-delay estimation,TDE)的声源定位技术. 基 ...

  7. 麦克风阵列波束形成之DSB原理与实现

    语音识别有近场和远场之分,且很多场景下都会用到麦克风阵列(micphone array).所谓麦克风阵列是一组位于空间不同位置的麦克风按一定的形状规则布置形成的阵列,是对空间传播声音信号进行空间采样的 ...

  8. 论文总结(negFIN: An efficient algorithm for fast mining frequent itemsets)

    一.论文整体思路: 作者提出了一种基于前缀树的数据结构,NegNodeset,其实是对之前前缀树的一种改进,主要区别在于采用了位图编码,通过这种数据结构产生的算法称为negFIN. negFIN算法高 ...

  9. 【论文阅读】A practical algorithm for distributed clustering and outlier detection

    文章提出了一种分布式聚类的算法,这是第一个有理论保障的考虑离群点的分布式聚类算法(文章里自己说的).与之前的算法对比有以下四个优点: 1.耗时短O(max{k,logn}*n), 2.传递信息规模小: ...

随机推荐

  1. 将子域名请求路由到MVC区域

    写了个扩展,分享给需要的朋友. 0x01 使用方法 在mvc区域中的{xxxx}AreaRegistration.cs文件中,如ProjectsAreaRegistration.cs <pre& ...

  2. 悬挂else引发的问题

    这个问题虽然已经为人熟知,而且也并非C语言所独有,但即使是有多年经验的C程序员也常常在此失误过. 考虑下面的程序片段: if (x == 0) if (y == 0) error(); else{ z ...

  3. Yii2框架---常用代码

    一.Php控制器跳转 return $this->redirect('/site/index/index');   二.回调自身控制器 self::actionXxxx();   三.获取当前用 ...

  4. Web常见约定规范(精选)

    常见的约定规范 (一)HTML约定规范 1,html属性顺序:id class name data-xxx (src for type href)(title alt)(aria-xxx role) ...

  5. SQL SERVER大话存储结构(2)_非聚集索引如何查找到行记录

              如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!      1 行记录如何存储     这里引入两个 ...

  6. 学习笔记:JavaScript-进阶篇

    1.二维数组   二维数组的表示: myarray[ ][ ] var myarr=new Array();  //先声明一维 for(var i=0;i<2;i++){  //一维长度为2   ...

  7. JAVA IO中的设计模式

    在java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式.       在任何一种计算机语言中,输入/输出都是一个很重要的部分.与一般的计算机语言相比,java将输入/输出的功能和 ...

  8. React入门---属性(state)-7

    state------>虚拟dom------>dom 这个过程是自动的,不需要触发其他事件来调用它. state中文理解:页面状态的的一个值,可以存储很多东西. 学习state的使用: ...

  9. 用kotlin方式打开《第一行代码:Android》

    参考:<第一行代码:Android>第2版--郭霖 注1:本文为原创,例子可参考郭前辈著作:<第一行代码:Android> 注2:本文不赘述android开发的基本理论,不介绍 ...

  10. HTM CSS 笔记乱炖

    一.常用实体(字符转义) '<' == '<' '©' == '©' '>' == '>' '"' == '"' ' ' == ' ' '®' == '®' ...