前言

本人刚刚入门阵列信号处理的波束形成方向,因此仿真过程中可能会出现错误,如果诸位大佬发现仿真过程中有错误,请不吝指出谢谢。

对角加载(Diagonal Loading, DL)是一种比较常用的提高Capon波束形成器鲁棒性的方法,通过在样本协方差矩阵的对角元素上加上一个适当的量,可以有效地提高样本协方差求逆(SMI)波束形成算法的稳健性,一般来说,通过在原样本协方差矩阵的基础上加上一个对角加载的量来更新矩阵,实现波束形成器的鲁棒性的方法都可以算作是对角加载法。在经典的对角加载法中,经过对角加载更新的矩阵一般可以定义为:

其中为噪声中白噪声分量的功率,为对角加载量,为加载噪声级,经验表明,一般取10,由此可以通过噪声功率得到一个较为合适的对焦加载量,因此,根据MVDR的最佳权向量解,可以得到一个较为一般的对角加载波束形成器的权向量解:

早期的鲁棒自适应波束形成器大多可以以对角加载的形式表现出来,比如S. A. Vorobyov等人提出的最坏情况性能最优波束形成器(Worst-case Performance Optimization, WCPO),其等价权向量解为:

关于这篇文章可以参考YHCANDOU大佬的最差性能最优波束形成算法。

问题的提出与作者的解决方案

在这篇文章中,作者分别考虑了样本协方差矩阵满秩(快拍数大于阵元数)与欠秩(快拍数小于阵元数)两种情况。

对于满秩的情况,作者提出了一个约束来获得导向矢量,该约束可以表示为:

其中为已知的名义导向矢量,为一给定的正定阵,然而在一般情况下,,因而该约束问题可以化为一个球形约束下的二次优化问题,即:

对于该优化问题,可以采用CVX求解器进行求解,此处作者采用了拉格朗日乘子法进行解决,构造拉格朗日函数:

求导并令其导数为0,即得:

化简即得(通过Woodbury矩阵反演公式):

定义

则可通过牛顿法对该方程的进行迭代求解。

最后的估计得到的导向矢量即为:

该情况下得到的权向量为:

对于欠秩的情况,作者构造了以下的约束来获得导向矢量:

其中B是一个的矩阵,且,该矩阵为列满秩,构成该矩阵的个列向量分别为其他角度上的名义导向矢量或者其线性组合,而则为各自列向量分量的系数。

和上一种情况的优化问题转换方式一样,该优化问题可以转换为:

又因为在这种情况下阵列协方差矩阵存在欠秩的情况,所以作者在这里对协方差矩阵进行了降秩的操作以保证变换后的协方差矩阵的满秩性,令:

该优化问题即为:

对该优化问题的近似求解过程与上一节方法类似,当然,该优化问题也可以用CVX求解器进行快速求解。

阵列权向量为:

仿真

部分仿真条件如下所示:

阵元数 10
信噪比 0
扰噪比 20
阵元间距 半波长
信源数 1
干扰数 2
信源到达角
干扰到达角 -30°,45°
信源角度估计误差 [0°,4°]
不确定系数 4.5
clc;
clear;
jk = 0;
loop = 50;
SINRO = zeros(1,length(-20:5:40));
snr = 0;
deg_dev_predf = 4;%%预定义的角度最大偏移量
%% 初始化及设定参数
array_num = 10;%%阵元数
snapshot_num = 40;%%快拍数
source_aoa = [5,-30,45];%%信源到达角
tgt_ang = 1;
c = 340;%%波速
f = 1000;%%频率
lambda_wave = c/f;%%波长
d = 0.5*lambda_wave;
inr1 = 20;
inr2 = 20;
source_num = length(source_aoa);%%信源数
sig_nr = [snr,inr1,inr2];%%信号功率dBw
deg_deviate = 2;%%误差角度偏离
source_dev = source_aoa(tgt_ang)+deg_deviate;
epsl = 4.5;
%% 转向矢量
a_bar = exp(-1i*(0:array_num-1)'*pi*sind((source_aoa(tgt_ang)+deg_deviate)));%%实际带有误差的阵列响应矢量
A = exp(-1i*(0:array_num-1)'*2*pi*(d/lambda_wave)*sind(source_aoa));%%阵列响应矩阵
a_real = A(:,1);
tar_sig = wgn(1,snapshot_num,sig_nr(tgt_ang));
inf1 = wgn(1,snapshot_num,sig_nr(2));
inf2 = wgn(1,snapshot_num,sig_nr(3));
n = (randn(array_num,snapshot_num)+randn(array_num,snapshot_num)*1i)/sqrt(2);
rec_sig = A(:,1)*tar_sig+A(:,2)*inf1+n;
R = rec_sig*rec_sig'/snapshot_num;%%接收阵的协方差矩阵
if array_num < snapshot_numR_inv = inv(R);Rs = A(:,1)*tar_sig*(A(:,1)*tar_sig)'/snapshot_num;Ri = (A(:,2)*inf1+A(:,3)*inf2)*(A(:,2)*inf1+A(:,3)*inf2)'/snapshot_num;Rn = n*n'/snapshot_num;[U,Gamma,V] = svd(R);Gamma_vec = diag(Gamma);z = abs(U'*a_bar);lambda = 0;while abs(norm(z./(1+lambda*Gamma_vec))^2-epsl)>1e-5lambda = lambda+(norm(z./(1+lambda*Gamma_vec))^2-epsl)/ ...sum(2*z.^2.*Gamma_vec.*(1+lambda*Gamma_vec)./(1+lambda*Gamma_vec).^4);enda_est = a_bar-U*diag(1./(1+lambda*Gamma_vec))*U'*a_bar;w0 = inv(a_est'*inv(R)*a_est)*inv(R)*a_est;
elseR_inv = inv(R);Rs = A(:,1)*tar_sig*(A(:,1)*tar_sig)'/snapshot_num;Ri = A(:,2)*inf1*(A(:,2)*inf1)'/snapshot_num;Rn = n*n'/snapshot_num;degr(ik,:) = linspace(source_dev(ik)-deg_dev_predf,source_dev(ik)+deg_dev_predf,array_num-1);B = exp(-1i*(0:array_num-1)'*2*pi*(d/lambda)*sind(degr(ik,:)));R1 =  B'*inv(R)*B;a1 = B'*inv(R)*a_bar;[U,Gamma,V] = svd(R);Gamma_vec = diag(Gamma);[Gamma_vec,index_vec] = sort(Gamma_vec,'descend');U = U(:,index_vec);z = abs(U'*a1);if abs(norm(inv(R1)*a1)) <=1lambda = 0;elsewhile abs(norm(z./(1+lambda*Gamma_vec))^2-1)>1e-5lambda=lambda+(norm(z./(1+lambda*Gamma_vec))^2-1)/ ...sum(2*z.^2.*Gamma_vec.*(1+lambda*Gamma_vec)./(1+lambda*Gamma_vec).^4);endu_hat = -1*U*inv(Gamma+eye(length(Gamma)))*U'*a1;a_est =  B*u_hat+a_bar;w0 = inv(a_est'*inv(R)*a_est)*inv(R)*a_est;end
end
beam_plot(w0);function [] = beam_plot(input_weight_vector)
array_num = length(input_weight_vector);
theta = -90:0.01:90;
p = exp(-1j*2*pi*(0:array_num-1)'*sind(theta)/2);
y = input_weight_vector'*p;
outputval = 20*log10(abs(y)/max(abs(y)));
figure()
plot(theta,outputval);
end

仿真运行结果如下图所示:

部分参考文献

S. A. Vorobyov, A. B. Gershman and Zhi-Quan Luo. Robust adaptive beamforming using worst-case performance optimization: a solution to the signal mismatch problem. IEEE Transactions on Signal Processing, vol. 51, no. 2, pp. 313-324, Feb. 2003.

J. Li, P. Stoica and Zhisong Wang. On robust Capon beamforming and diagonal loading. IEEE Transactions on Signal Processing, vol. 51, no. 7, pp. 1702-1715, July 2003.

波束形成 基于对角加载的稳健自适应波束形成相关推荐

  1. android网络转圈,android基于dialog加载时转圈圈很好的demo

    [实例简介] 这是一个android基于dialog加载时转圈圈很好的完整demo,很适合新手学习,希望对有需要的朋友能得到帮助 [实例截图] [核心代码] dialog_anim └── dialo ...

  2. android全平台编译libjpeg-turbo并基于ANativeWindow加载JPEG图片

    图形图像实践 android全平台编译libjpeg-turbo并基于ANativeWindow加载JPEG图片 android全平台编译libpng并基于ANativeWindow加载PNG图片 概 ...

  3. 波束赋形技术lms算法在matlab仿真,自适应波束成形算法LMS、RLS、VSSLMS分解

    1.传统的通信系统中,基站天线通常是全向天线,此时,基站在向某一个用户发射或接收信号时,不仅会造成发射功率的浪费,还会对处于其他方位的用户产生干扰.然而,虽然阵列天线的方向图是全向的,但是通过一定技术 ...

  4. AJAX——基于请求加载数据

    2019独角兽企业重金招聘Python工程师标准>>> 搞点Demo,利于快速上手... AJAX--Asynchronous JavaScript and XML(异步JavaSc ...

  5. 腾讯TBS加载网页无法自适应记录

    1.  所遇到的问题 webview加载指定网页无法实现自适应,之前在加载重构一个网页的时候,其实也遇到这种问题,然后就有了下面的一下步骤 WebSettings webSettings = view ...

  6. android webview加载html图片自适应手机屏幕大小点击查看大图

    我们在开发中,显示信息详情时,一般后台会给出html文本,在android端一般采用webview控件来展示,但是后台给出的html文本一般是给电脑端用的,没有自适配手机,导致手机端图片显示过大,需要 ...

  7. 安卓 webview加载html图片自适应手机屏幕大小和点击查看大图

    我们在开发中,显示信息详情时,一般后台会给出html文本,在android端一般采用webview控件来展示,但是后台给出的html文本一般是给电脑端用的,没有自适配手机,导致手机端图片显示过大,需要 ...

  8. 一种基于谷歌浏览器加载activex控件的解决方法与流程技术_Office控件使用总踩雷?畅写Office带你云端飞行...

    使用Office必然绕不开控件.但是Office控件使用过程中却问题频发.比如控件下载.安装.配置.启动Office.文档打开.参数传递等过程都会出现诸多问题,浪费了很多不必要得时间成本:

  9. 【WebGIS】二、基于Openlayers实现地图的加载与显示

    二.基于Openlayers实现地图的加载与显示 基于上文中配置好的环境,先通过Element Plus实现一个页面的布局,然后基于openlayers加载显示全球瓦片地图. 1. 引入element ...

最新文章

  1. android 广播机制
  2. linux 下的图片处理软件下载,美图秀秀Linux版
  3. 人民日报新媒体中心接入神策数据,媒体阅读体验新升级
  4. 【BZOJ1048】分割矩阵(记忆化搜索,动态规划)
  5. 怎么用c语言实现万年历,用C语言如何编写“万年历”
  6. SpringBoot 2.x 使用Redis作为项目数据缓存
  7. app屡次停止运行怎么解决_打桩机发动机温度过热的问题及运行中熄火怎么解决_行业新闻...
  8. 通过程序包管理器控制台解决版本错误(CS1705)
  9. java实现文件对比
  10. 你还在对着手机干唱?k歌神器挑选法则
  11. linux文件增加自定义属性,Linux 笔记...文件和目录属性useradd、userdel、usermod 、passwd...
  12. cdn刷新api_【第1868期】闲话 CDN
  13. vue3 setup vetur报错 解决方案 vscode
  14. Unity Shader学习-高光反射
  15. 热乎乎的宇宙头条校招前端面经
  16. c语言自动售货机实验报告,c语言自动售货机实验报告
  17. String.prototype.matchAll 正则一些常用方法
  18. windows 10 输入法切换设置
  19. VI编辑器 Search it Bottom, Continuing at Top
  20. linux系统中的时间

热门文章

  1. 2012暑期川西旅游之第八天(青城山-成都)
  2. Unity-网络开发(二)
  3. P1462 通往奥格瑞玛的道路(二分 迪杰斯特拉 最短路 + spfa最短路算法)
  4. Oracle 12c 的 hr_main.sql
  5. 使用nginx上传大文件报500异常处理
  6. 组策略应用之一——软件分发
  7. 第一次作业:读博文有感
  8. 宏重定义 头问题重定义解决办法
  9. 笔记本电脑快速连接手机热点的方法
  10. 云计算、大数据和人工智能之间的关系----详细说明