自适应滤波:维纳滤波器——LCMV及MVDR实现_weixin_33734785的博客-程序员秘密

技术标签: matlab  

作者:桂。

时间:2017-03-24  06:52:36

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

声明:欢迎被转载,不过记得注明出处哦~


 【读书笔记03】

前言

西蒙.赫金的《自适应滤波器原理》第四版,上一篇看到维纳滤波基本形式:最优化问题,且无任何条件约束。这次看到有约束的部分,简单整理一下思路:

  1)拉格朗日乘子法;

  2)线性约束最小方差滤波器(Linearly constrained minimum-variance,LCMV);

  3)谱估计之MVDR算法(Minimum variance distortionless response ,MVDR);

内容为自己的学习总结,如有错误之处,还请各位帮忙指出!

 

一、拉格朗日乘子法

学习到含有约束条件的Wiener Filter,拉格朗日乘子法是解决:将含约束条件的优化问题转化为无约束条件优化问题的途径,故先梳理一下。

  A-只含一个等式约束的最优化

实函数$f\left( {\bf{w}} \right)$是参数向量${\bf{w}}$的二次函数,约束条件是:

${ { {\bf{w}}^H}{\bf{s}} = g}$

其中$\bf{s}$是已知向量,$g$是复常数。例如在波束形成应用中${\bf{w}}$表示各传感器输出的一组复数权值,$\bf{s}$是一个旋转向量。假设该问题是一个最小化问题,令$c\left( {\bf{w}} \right) = { {\bf{w}}^H}{\bf{s}} - g = 0 + j0$可以描述为:

所谓拉格朗日乘子法,就是引入拉格朗日乘子:将上述约束最小化问题转化为无约束问题,定义一个新的实函数:

$h\left( {\bf{w}} \right) = f\left( {\bf{w}} \right) + {\lambda _1}{\mathop{\rm Re}\nolimits} \left[ {c\left( {\bf{w}} \right)} \right] + {\lambda _2}{\mathop{\rm Im}\nolimits} \left[ {c\left( {\bf{w}} \right)} \right]$

现在定义一个复拉格朗日乘子:

$\lambda  = {\lambda _1} + {\lambda _2}$

$h({\bf{w}})$改写为:

$h\left( {\bf{w}} \right) = f\left( {\bf{w}} \right) + {\mathop{\rm Re}\nolimits} \left[ { {\lambda ^*}c\left( {\bf{w}} \right)} \right]$

至此,无约束优化问题转化完成,利用偏导求参即可,其实这是一个简化的形式,分别求解$\lambda _1$、$\lambda _2$也是一样的。

  B-包含多个等式约束的最优化

实函数$f\left( {\bf{w}} \right)$是参数向量${\bf{w}}$的二次函数,约束条件是:

${ { {\bf{w}}^H}{\bf{s_k}} = g_k}$

其中$k = 1,2...K$,方法同单个约束情况相同,求解伴随方程:

$\frac{ {\partial f}}{ {\partial { {\bf{w}}^*}}} + \sum\limits_{k = 1}^K {\frac{\partial }{ {\partial { {\bf{w}}^*}}}\left( { {\mathop{\rm Re}\nolimits} \left[ {\lambda _k^*{c_k}\left( {\bf{w}} \right)} \right]} \right)}  = {\bf{0}}$

此时与多个等式约束联合成方程组,这个方程组定义了${\bf{w}}$和拉格朗日乘子${\lambda _1}$、${\lambda _2}$...${\lambda _K}$的解。

 

二、线性约束最小方差滤波器

   之前看到的维纳滤波都是基于最小均方误差准则,而没有添加任何约束,此处考虑含有线性约束情况下的方差滤波器,文中给了一个图:

其中$x(n)$为输入信号(即$u$,为了与下文统一,用$x$表示),$w_i$为权重,$y(n)$为滤波器输出:

$y\left( n \right) = \sum\limits_{k = 0}^{M - 1} { {w^*_k}x\left( {n - k} \right)} $

 这个优化问题如果没有约束可以表述为:

$\arg \mathop {\min }\limits_{\bf{w}} J = E\left[ { {y^H}y} \right]$

假设$\theta_0$为目标达到角,希望对该角度特殊处理:如果该角是目标角,希望其幅度保持不衰减,即$\sum\limits_{k = 0}^{M - 1} { {w^*_k}{e^{ - jk{\theta _0}}}}  = 1$;反之,如果是干扰信号,希望其幅度衰减为0,即$\sum\limits_{k = 0}^{M - 1} { {w^*_k}{e^{ - jk{\theta _0}}}}  = 0$;无论是0还是1,都是对优化问题的一种约束形式,写出更一般的约束形式:

$\sum\limits_{k = 0}^{M - 1} { {w^*_k}{e^{ - jk{\theta _0}}}}  = g$

$g$是一个复增益。利用拉格朗日乘子法给出约束条件下准则函数(暂不考虑噪声情况):

$J = { {\bf{w}}^H}{R_{xx}}{\bf{w}} + {\mathop{\rm Re}\nolimits} \left[ { {\lambda ^*}\left[ { { {\bf{w}}^H}{\bf{s}}\left( { {\theta _0}} \right) - g} \right]} \right]$

其中${\bf{s}}\left( { {\theta _0}} \right) = \left[ {1,{e^{ - j{\theta _0}}},...,{e^{ - j(M - 1){\theta _0}}}} \right]$,$M$是权向量$\bf{w}$的个数,则到系数解:

$\lambda  =  - \frac{ {2g}}{ { { {\bf{s}}^H}\left( { {\theta _0}} \right){ {\bf{R}}^{ - 1}}{\bf{s}}\left( { {\theta _0}} \right)}}$

对应最优权向量:

${ {\bf{w}}_{opt}} = \frac{ { {g^*}{ {\bf{R}}^{ - 1}}{\bf{s}}\left( { {\theta _0}} \right)}}{ { { {\bf{s}}^H}\left( { {\theta _0}} \right){ {\bf{R}}^{ - 1}}{\bf{s}}\left( { {\theta _0}} \right)}}$

以权向量${ {\bf{w}}_{opt}}$表征的波束形成器称为线性约束最小方差(LCMV, linearly constrained minimum-variance)波束形成器,也称LCMV滤波器。

 

三、LCMV应用——MVDR算法

实际应用中信号掺杂了噪声。假设原信号$s(t)$,接收器收集的是不同时延的混合信号,经过采样量化后得$x(n)$,现在希望通过自适应权重$w$输出符合需求的$y$,假设通道个数为$N$,给出接收通道模型:

写成矩阵形式:

进行相关矩阵求解:

可以发现如果$w^Hw$为定值,则噪声对最优权值的求解无影响,LCMV可用。

给出混合模型:

对应准则函数(此处$g = 1$):

借助LCMV的分析,得出MVDR最优权重:

实际应用中,通常用时间换空间,借助遍历性近似求解相关矩阵:

给出代码:

doas=[-30 -5 40]*pi/180; %DOA's of signals in rad.
P=[1 1 1]; %Power of incoming signals
N=10; %Number of array elements
K=1024; %Number of data snapshots
d=0.5; %Distance between elements in wavelengths
noise_var=40; %Variance of noise
r=length(doas); %Total number of signals
% Steering vector matrix. Columns will contain the steering vectors of the r signals
A=exp(-i*2*pi*d*(0:N-1)'*sin([doas(:).']));
% Signal and noise generation
sig=round(rand(r,K))*2-1; % Generate random BPSK symbols for each of the
% r signals
noise=sqrt(noise_var/2)*(randn(N,K)+i*randn(N,K)); %Uncorrelated noise
X=A*diag(sqrt(P))*sig+noise; %Generate data matrix
R=X*X'/K; %Spatial covariance matrix
%MVDR
IR=inv(R); %Inverse of covariance matrix
for k=1:length(angles)
mvdr(k)=1/(a1(:,k)'*IR*a1(:,k));
end
figure;
plot(angles,abs(mvdr)/max(abs(mvdr)),'k');hold on;
xlabel('Angle in degrees')
%Estimate DOA's using the classical beamformer
for k=1:length(angles)
Classical(k)=(a1(:,k)'*R*a1(:,k));
end
plot(angles,abs(Classical)/max(abs(Classical)),'r--');grid on;
legend('MVDR','Classical Beamformer');

对应结果图:

噪声较大时:

二者就比较接近,可以发现:

  • 信号与噪声不相关、且噪声为白噪声时,仍能求解最优权值;
  • 噪声较大时,MVDR与无约束最优滤波效果接近,此时MVDR的优势不再明显,这也容易理解,噪声占主要成分时对波束的约束保留效果不再明显。

两点补充:

1)因为LCMV中有矩阵求逆一项,所以补充说明一点:默认不同角度信号不相干,只记录学习的理论知识,不论及技术细节处。

2)基于窄带分析。如果是宽带,则可以划分多个自带,或者利用聚焦矩阵预处理,窄带才有如下近似(且一个频带内才可以用一个频率表征):

 

参考:

Jeffrey Foutz, Andreas Spanias, and Mahesh K. Banavar《Narrowband Direction of Arrival Estimation for Antenna Arrays》.

Simon Haykin 《Adaptive Filter Theory Fourth Edition》.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33734785/article/details/86396027

智能推荐

学习cmake的使用_咆哮的狼的博客-程序员秘密

官网 http://www.cmake.org/cmake/help/cmake_tutorial.htmlwindows下的使用http://blog.163.com/jacky_ling0/blog/static/1373925712011090236524/http://blog.csdn.net/dbzhang800/article/details/6314073u

C语言嵌入式系统编程修炼之道——背景篇_SimminonGarcia的博客-程序员秘密

C语言嵌入式系统编程修炼之道——背景篇作者:宋宝华  e-mail:[email][email protected][/email]不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发的一般选择。而与之相比,C语言——一种“高级的低级”语言,则成为嵌入式...

使用Camera进行拍照_weixin_30762087的博客-程序员秘密

Android应用提供了Camera来控制拍照,使用Camera进行拍照的步骤如下:1、调用Camera的open()方法打开相机。2、调用Camera的getParameters()方法获取拍照参数,该方法返回一个Camera.Parameters对象。3、调用Camera的startPreview()方法开始预览取景,在预览取景之前需要调用Camera的setPreviewDisp...

SpringBoot专栏--依赖以及构建工具_ldcanlida163的博客-程序员秘密

依赖以及构建工具依赖环境和构建工具SpringBoot开发需要两个基础环境和一个开发环境。这两个环境是指 Java 编译环境和构建工具环境,一个开发工具是指 IDE 开发工具。Java主要有三大构建工具,Ant、Maven、Gradle。 Ant的核心是java写的,才用xml作为构建脚本,允许在任何环境下运行构建。 Maven可以将项目过程规范、...

思科 交换机 全局、telnet、consol 密码配置_Bobo_ 8888的博客-程序员秘密

全局密码(enable)配置enable password 密码再次进入secret 特权密码(是经过加密的密码)要注意的是secret 不能和password 密码一样否则就失去了加密的意义,还有就是2个密码都配置了的话要登入时系统默认secret 密码生效。另外注意的是配了enable secret 就看不到enable password了,相当于覆盖了enable password 密码,官方考试题中就曾经考察过这一点,-般建议直接配enable secrettelnet(远程登陆)

04高级自绘-11横向时间线-timeline_feiyangqingyun的博客-程序员秘密_横向timeline

一、运行效果二、功能特点可设置当前缩放比例。可设置线条高度。可设置线条颜色。可设置背景颜色。缩放级别支持 时、分、秒、毫秒。支持鼠标滚轮缩放。三、公共接口public: //缩放级别 int getScaled() const; int getScaledWidth() const; void setScaled(int scaled); //线条高度 int getLineHeight() const; void setLi

随便推点

ESLint-config-standard (包含 ESLint 标准配置属性)_念念不忘, 必有回响的博客-程序员秘密[email protected]/eslint-config-standard

规则说明 "no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 "no-bitwise": 0,//禁止使用按位运算符 "no-caller": 1,//禁止使用arguments.caller或arguments.callee "no-catch-shadow": 2,...

OSC职位推荐:腾讯 SNG 喊你来面试啦_chujianxin2012的博客-程序员秘密

哎呀,妈呀,你听说了吗?腾讯 SNG 事业部大招人了!!!Java、web前端、android、C/C++开发、虚拟化研发等200多个职位,虚位以待。只要你在开源中国投递简历,即可 1站式面试,2天反馈,3天offer。不要怀疑这个的真实性哦,小码哥可是和 HR 确认好了,千真万确。(小道消...

Unity3D 连接MySql数据库(附案例)_夜色。的博客-程序员秘密

http://blog.csdn.net/nette/article/details/4394849Unity3D 连接MySql数据库 一.在Mac OS X中架设MySql数据库下载mysql for Mac http://dev.mysql.com/downloads/mysql/5.0.html可以在Mac OS X 10.2.x(“

android gridview动态添加数据源,GridView动态添加View_V豚的博客-程序员秘密

packagecom.pingyijinren.helloworld.adapter;importandroid.content.Context;importandroid.text.Layout;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid....

程序员如何编写高大上且实用的技术文档--转_晨海1024的博客-程序员秘密_程序员怎么写技术文档

原文链接:https://blog.csdn.net/qq_17324713/article/details/105895720?utm_term=%E7%A0%94%E5%8F%91%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3%E7%BC%96%E5%86%99&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-0-105895720&spm=

推荐文章

热门文章

相关标签