矢量水听器 近场 远场 --------------------常规波束形成,MVDR的比较
摘自《水平线阵的反卷积常规波束形成》,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的比较的更多相关文章
- 5G/NR OTA (Over The Air) 测试详解
原文链接:http://www.sharetechnote.com/html/5G/5G_OTA.html 1 什么是OTA (Over The Air) OTA代表Over The Air.为了使用 ...
- Analysis of Two-Channel Generalized Sidelobe Canceller (GSC) With Post-Filtering
作者:凌逆战 地址:https://www.cnblogs.com/LXP-Never/p/12071748.html 题目:带后置滤波的双通道广义旁瓣相消器(GSC)的分析 作者:Israel Co ...
- WebService安全加密
众所周知,WebService访问API是公开的,知道其URL者均可以研究与调用.那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括 ...
- 为什么在AI领域网络安全更重要?先睹为快~
AI迎来了改变世界的新机遇,同时也迎来了新的网络安全问题,只要是联网的系统就会有漏洞爆出~ 随着大数据的应用,人工智能逐渐走入千家万户并显示出巨大的市场空间,从机器人客服.自动驾驶汽车到无人机等,全都 ...
- 【自适应波束形成】MVDR(Minimum Variance Distortionless Response )笔记
参考: https://blog.csdn.net/qq_40981790/article/details/80143524 1. MVDR简介(Minimum Variance Distortion ...
- 麦克风阵列波束形成之DSB原理与实现
语音识别有近场和远场之分,且很多场景下都会用到麦克风阵列(micphone array).所谓麦克风阵列是一组位于空间不同位置的麦克风按一定的形状规则布置形成的阵列,是对空间传播声音信号进行空间采样的 ...
- 空间谱专题02:波束形成(Beamforming)
作者:桂. 时间:2017-08-22 10:56:45 链接:http://www.cnblogs.com/xingshansi/p/7410846.html 前言 本文主要记录常见的波束形成问题 ...
- HTML5矢量实现文件上传进度条
在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...
- 基于HT for Web矢量实现3D叶轮旋转
在上一篇<基于HT for Web矢量实现2D叶轮旋转>中讲述了叶轮旋转在2D上的应用,今天我们就来讲讲叶轮旋转在3D上的应用. 在3D拓扑上可以创建各种各样的图元,在HT for Web ...
随机推荐
- ibatis.net 循环
if (oReqV[0]["tag"] != null && !string.IsNullOrEmpty(oReqV[0]["tag"].ToS ...
- 【转载】许纪霖教授在上海财经大学演讲——漫谈“大学生的四个Learn”
这几年,越来越多的大学毕业生抱怨找不到合意的工作.很多单位又感叹,找一个称职的大学生真难.这就形成一个非常大的反差和矛盾.那么,社会究竟需要怎样的大学生?我们的大学到底应该培养怎样的大学生?我们作为大 ...
- 无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题
最近在阿里云上租了个服务器,想借此发布一些自己制作的网页.于是就打算安装一下环境,考虑到搭建动态网站所要安装的环境比较多,于是就选择了wampserver这样一个集成环境的安装. 由于我的服务器很新( ...
- C# 使用缓存数据模拟抢购
在所有的电商网站中,不乏大量的抢购,比如双十一,双十二等等,作为一名开发人员考虑最多的就是多并发以及高并发 废话少说,开始写代码.我用了C#的MemoryCache代替试下流行的各种缓存 商品测试 ...
- Mac端StartUML的安装和破解
**本人安装的是StarUML-3.0.1版本** 一.下载与安装 1. 从官方网站下载,网址:http://staruml.io/ 2. dmg文件下载完成后,双击安装. 二.破解 1. 安装npm ...
- kettle中文乱码问题
db连接->选项 配置参数 characterEncoding,设置值为gbk/utf8.
- python大法好——多线程
Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件 ...
- Java数据类型(primitive)原始数据类型
1.小心别溢出来. 要确保变量能存下来所保存的值. 你无法用小杯子装大值.好吧,其实可以,但是会损失某些信息,也就是所说的溢位.当判断到所使用的容器不足以装载时,编译器会试着防止珍重情况发生.举例来说 ...
- 正则简单操作cookie、url search
正则操作cookie.url getCookie function getCookie(key) { var cookies = window.document.cookie, reg = new R ...
- 经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能
说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后, ...