摘自《水平线阵的反卷积常规波束形成》,IRONMAN---------------------------------------------------

在常规的波束形成中,是将阵列上的每个接收机的同时刻数据乘上一个预设的系数然后求和并最终得到一系列的具有特定指向性的波束。但是由此得到的波束它的主瓣宽度很宽而且旁瓣衰减有限,能量泄漏很严重。为了解决这些问题,许多的学者提出了一些高分辨的波束形成算法,MVDR和DMR就是其中的代表。然而这些算法虽然能够得到很窄的波束宽度和低的旁瓣级,但是需要大量的数据样本来估计数据的协方差矩阵(如MVDR),计算量很大,而且当目标方位变化很快的时候,这种方法的性能将大打折扣甚至变得不稳定。对于DMR其需要事先知道目标的个数这一先验知识,而往往目标的个数事先是未知的,因此它的应用受到了限制。针对这些问题T.C.Yang教授创造性的将解卷积的方法应用到常规波束形成中,效果显著。此方法于2016年首次被提出,文章的题目是Deconvolved Conventional Beamforming for a Horizontal Line Array,在IEEE JOURNAL OF OCEANIC ENGINEERING上发表。为了方便大家阅读,博主将其翻译成了中文版的,如果有什么不对的地方,还请大家批评指正。

 

仿真程序:

%------------矢量水听器  近场 远场 常规波束形成 MVDR-----0722-----

clc; clear all; close all;

%-----------信号模型--------------

M=12;

N=1024;

f0=1000;

fs=10*f0;

c=1500;

lamda=c/f0;   %波长

w=2*pi*f0;

k=w/c;

d=lamda/2;

t=0:N-1;

snr=10;%信噪比

theta=30*pi/180;%入射角度

A=sqrt(2*10^(snr/10));

s=A*exp(-j*w*t/fs);

%----------远场 常规波束形成--------------

for m=1:M

Sp(m,:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))+randn(size(t))/3;

Sx(m,:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))*cos(theta)+randn(size(t))/3;

Sy(m,:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))*sin(theta)+randn(size(t))/3;

end

S=[Sp.',Sx.',Sy.'];

R=cov(S);

theta1=-180:180; for i=1:length(theta1)

for m=1:M

Wp(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180));

Wx(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180))*cos(theta1(i)*pi/180);

Wy(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180))*sin(theta1(i)*pi/180);

end

W=[Wp,Wx,Wy];

P(i)=W*R*W';

Pm(i)=1/(W*(R^-1)*W');

end

%-----------归一化-----------------

pp=max(abs(P));

P=20*log10(P/pp);

ppm=max(abs(Pm));

Pm=20*log10(Pm/ppm);

%----------------------------------

figure

plot(theta1,P);

title('远场 常规算法波束形成') xlabel('x/角度°') ylabel('y/dB') ;

%-----------------------------------

figure

plot(theta1,Pm);

title('远场 MVDR算法波束形成') xlabel('x/角度°') ylabel('y/dB')

%------------------------------------

figure

plot(theta1,P,'r-',theta1,Pm,'b:');

title('远场 常规与MVDR算法波束形成'); xlabel('x/角度°'); ylabel('y/dB'); legend('常规算法','MVDR算法');

%----------近场 波束形成--------------

x0=15; y0=20; % 目标位置x0              % 目标位置y0

for m=1:M

theta2(m,:)=atan(y0/(x0-(m-1)*d));

r(m,:)=sqrt(y0^2+((x0-(m-1)*d))^2);

SMp(m,:)=A*exp(-j*(w*t/fs+k*r(m,:)))+randn(size(t))/3;

SMx(m,:)=A*exp(-j*(w*t/fs+k*r(m,:))).*cos(theta2(m,:))+randn(size(t))/3;

SMy(m,:)=A*exp(-j*(w*t/fs+k*r(m,:))).*sin(theta2(m,:))+randn(size(t))/3;

end

SM=[SMp.',SMx.',SMy.'];

RM=cov(SM);

x=-30:0.5:30;

y=-30:0.5:30;

for xx=1:length(x)

hwait=waitbar(0,'请等待>>>>>>>>');

step=length(x)/100;

if length(x)-xx<=5

waitbar(xx/length(x),hwait,'即将完成');

pause(0.1);

else

PerStr=fix(xx/step);

str=['正在运行中',num2str(PerStr),'%'];

waitbar(xx/length(x),hwait,str);

pause(0.1);

end

close(hwait);

for yy=1:length(y)

for m=1:M

theta3=atan(y(yy)/(x(xx)-(m-1)*d));

r2=sqrt(y(yy)^2+((x(xx)-(m-1)*d))^2);

WMp(m)=exp(-j*k*r2);

WMx(m)=exp(-j*k*r2)*cos(theta3);

WMy(m)=exp(-j*k*r2)*sin(theta3);

end

WM=[WMp,WMx,WMy];

PP(xx,yy)=WM*RM*WM';

PPm(xx,yy)=1/(WM*(RM^-1)*WM');

end

end

size(xx) size(yy) size(PP)

figure

imagesc(x,y,abs(PP'))  colorbar; colormap gray;

title('近场 常规算法波束形成') xlabel('x/米'); ylabel('y/米'); axis xy;

figure

imagesc(x,y,abs(PPm')) title('近场 MVDR算法波束形成') xlabel('x/米'); ylabel('y/米'); axis xy; colorbar; colormap gray;

参考:

https://blog.csdn.net/HJ199404182515/article/details/73882953

矢量水听器 近场 远场 --------------------常规波束形成,MVDR的比较的更多相关文章

  1. 5G/NR OTA (Over The Air) 测试详解

    原文链接:http://www.sharetechnote.com/html/5G/5G_OTA.html 1 什么是OTA (Over The Air) OTA代表Over The Air.为了使用 ...

  2. Analysis of Two-Channel Generalized Sidelobe Canceller (GSC) With Post-Filtering

    作者:凌逆战 地址:https://www.cnblogs.com/LXP-Never/p/12071748.html 题目:带后置滤波的双通道广义旁瓣相消器(GSC)的分析 作者:Israel Co ...

  3. WebService安全加密

    众所周知,WebService访问API是公开的,知道其URL者均可以研究与调用.那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括 ...

  4. 为什么在AI领域网络安全更重要?先睹为快~

    AI迎来了改变世界的新机遇,同时也迎来了新的网络安全问题,只要是联网的系统就会有漏洞爆出~ 随着大数据的应用,人工智能逐渐走入千家万户并显示出巨大的市场空间,从机器人客服.自动驾驶汽车到无人机等,全都 ...

  5. 【自适应波束形成】MVDR(Minimum Variance Distortionless Response )笔记

    参考: https://blog.csdn.net/qq_40981790/article/details/80143524 1. MVDR简介(Minimum Variance Distortion ...

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

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

  7. 空间谱专题02:波束形成(Beamforming)

    作者:桂. 时间:2017-08-22  10:56:45 链接:http://www.cnblogs.com/xingshansi/p/7410846.html 前言 本文主要记录常见的波束形成问题 ...

  8. HTML5矢量实现文件上传进度条

    在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...

  9. 基于HT for Web矢量实现3D叶轮旋转

    在上一篇<基于HT for Web矢量实现2D叶轮旋转>中讲述了叶轮旋转在2D上的应用,今天我们就来讲讲叶轮旋转在3D上的应用. 在3D拓扑上可以创建各种各样的图元,在HT for Web ...

随机推荐

  1. iPerf 笔记

    iPerf 笔记 iperf 是一个网络性能测试工具,可以测试最大TCP和UDP带宽质量,具有多种参数和UDP特性,可以报告带宽.延迟抖动和数据包丢失. iperf 可以用来测一些网络设备,比如路由器 ...

  2. ReentrantLock原理

    ReentrantLock主要利用CAS+CLH队列来实现.它支持公平锁和非公平锁,两者的实现类似. CAS:Compare and Swap,比较并交换.CAS有3个操作数:内存值V.预期值A.要修 ...

  3. python数据类型、if判断语句

    python的数据类型: int(整型) float(浮点型) #相较c++,去除了char.long.longlong... str(字符串)    #同等c++ sting类型 list(列表) ...

  4. idea Invalid bound statement (not found):

    一次 诡异的 idea Invalid bound statement (not found): 配置文件: mybatis.mapper-locations=classpath:mapper/*.x ...

  5. Mac系统home目录权限修改【转载】

    转载自:http://ju.outofmemory.cn/entry/283070 最近,想把某程序安装到mac下的/home目录下面,发现没有权限,即便是使用sudo命令也无法创建程序目录,在网上查 ...

  6. C# ADO.NET中设置Like模糊查询的参数

    ADO.NET进行参数化时会自动将参数值包含在单引号中,除了特殊需求,最好不要自己手动添加单引号.ADO.NET中识别参数标识是使用符号@,如果在SQL语句中将参数标识放在单引号中,单引号中的参数标识 ...

  7. 基于JSP servlet mysql 的登陆页面

    数据库中建表: login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8&q ...

  8. 盘点一下Github上开源的Java面试/学习相关的仓库,看完弄懂薪资至少增加10k

    最近浏览 Github ,收藏了一些还算不错的 Java面试/学习相关的仓库,分享给大家,希望对你有帮助.我暂且按照目前的 Star 数量来排序. 本文由 SnailClimb 整理,如需转载请联系作 ...

  9. nltk-贝叶斯分类器

    本人小白一枚,专业统计,之前做过质量工程,现转行将近一年,开始记录我的学习过程及踩过的坑. 第一篇:用贝叶斯分类器(本文使用NLTK中的NaiveBayesClassifier)将5000多个样本进行 ...

  10. JAVA_04

    * a:局部代码块 * 在方法中出现:限定变量生命周期,及早释放,提高内存利用率 * b:构造代码块 (初始化块) * 在类中方法外出现:多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并 ...