作者:桂。

时间: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. 【原创】bootstrap框架的学习 第七课 -[bootstrap表格]

    Bootstrap 表格 标签 描述 <table> 为表格添加基础样式. <thead> 表格标题行的容器元素(<tr>),用来标识表格列. <tbody& ...

  2. bzoj3064 Tyvj 1518 CPU监控

    Description Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看视频之外,还会做 ...

  3. MySQL 的Coalesce函数

    今天用到了coalesce 函数,原因在于,我想要查找合同到期日的字段是否有值(因为合同到期日分3个字段,对应着不同的日期) select coalesce(contract_date1,contra ...

  4. 如何在 ASP.NET Core 中发送邮件

    前言 我们知道目前 .NET Core 还不支持 SMTP 协议,当我么在使用到发送邮件功能的时候,需要借助于一些第三方组件来达到目的,今天给大家介绍两款开源的邮件发送组件,它们分别是 MailKit ...

  5. JDK安装以及安装过程中出现的问题(日志二)

    上一篇:初识hadoop-历史及其家族(日志一) 我安装的这个版本的Ubuntu,已经在java包中存在了,所以当使用java -version的时候,会出现下载包的提示,使用apt-get命令之后, ...

  6. linux下归档、解压缩工具:tar命令

    tar是一个类似于windows下的解压缩工具,可以将一大堆文件或目录打包成一个文件,还可以通过特定选项使用压缩工具进行解压缩. 语法: tar (选项) (参数) 常用选项: -c:创建打包文件. ...

  7. Linux-vim学习入门

    1.前言     vi/vim是linux中很重要的文本编辑器.我第一次使用这个编辑器时,很不习惯,甚至都不知道如何移动光标和插入字符.慢慢地经过学习,才知道如何使用vi/vim.     vi/vi ...

  8. 增强for循环 -- foreach循环

    1  作用 简化迭代器的书写格式.(注意:foreach循环的底层还是使用了迭代器遍历.) 2  适用范围 如果是实现了Iterable接口的对象或者是数组对象都可以使用foreach循环. 3  格 ...

  9. MySql5.7环境搭建

    1. 安装mysql的linux系统 [root@grewan ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@grewan ...

  10. ztree实现权限功能(横向显示)

    最近在做权限功能的时候,采用的ztree实现的,但是产品要求最后一层的权限节点要横向显示.开始在网上找的解决方案是用css样式把最后一层的display设置为inline.在我本地电脑上看了下.效果不 ...