【信号频率估计】MVDR算法及MATLAB仿真

news2024/9/21 0:38:01

目录

  • 一、MVDR算法
    • 1.1 简介
    • 1.2 原理
    • 1.3 特点
      • 1.3.1 优点
      • 1.3.2 缺点
  • 二、算法应用实例
    • 2.1 信号的频率估计
    • 2.2 MATLAB仿真代码
  • 三、参考文献

一、MVDR算法

1.1 简介

最小方差无失真响应(Mininum Variance Distortionless Response,MVDR)算法最早是J. Capon于1969年提出,用于多维地震阵列传感器的频率-波数分析。随后,Lacoss在1971年将其引入到一维时间序列的分析中。
MVDR算法由于是Capon提出的,所以也将其称为Capon算法。

1.2 原理

根据数字波束形成的原理,得到输入信号 x ( n ) x(n) x(n) 经空域滤波后的输出为:
y ( n ) = w H x ( n ) = w H a ( θ ) s ( n ) ( 1 − 1 ) y(n)=w^{H}x(n)=w^{H}a(θ)s(n) (1-1) y(n)=wHx(n)=wHa(θ)s(n)11
其中,输入信号 x ( n ) x(n) x(n) 为期望、干扰、噪声三种信号的耦合; a ( θ ) a(θ) a(θ) 为导向矢量。
当一个远场窄带信号 s ( n ) s(n) s(n) 入射到 M 个阵元的均匀线阵时,阵列输出信号的平均功率为:
P ( θ ) = E [ ∣ y ( n ) ∣ 2 ] = E [ w H x ( n ) x H ( n ) w ] = w H R w ( 1 − 2 ) P(θ)=E[|y(n)|^2]=E[w^{H}x(n)x^{H}(n)w]=w^{H}Rw (1-2) P(θ)=E[y(n)2]=E[wHx(n)xH(n)w]=wHRw12
式(1-2)中 R = E [ x ( n ) x H ( n ) ] R=E[x(n)x^{H}(n)] R=E[x(n)xH(n)] 为接收信号 x ( n ) x(n) x(n) 的空间相关矩阵。

假设期望信号从 θ 0 θ_{0} θ0 方向入射,阵列接收信号为 x 0 ( n ) = a ( θ 0 ) s ( n ) x_{0}(n)=a(θ_{0})s(n) x0(n)=a(θ0)s(n) ,为了使 x 0 ( n ) x_{0}(n) x0(n) 通过空域滤波器后无失真,权矢量 w w w 需满足:
w H a ( θ 0 ) = 1 ( 1 − 3 ) w^{H}a(θ_{0})=1 (1-3) wHa(θ0)=113
选择的加权矢量 w w w 满足式(1-3)就可以实现对干扰信号以及噪声的抑制,从而使输出信号的平均功率 P ( θ ) P(θ) P(θ) 最小。由此可以建立目标优化方程为:
在这里插入图片描述
采用拉格朗日乘数法对式(1-4)构造代价函数为:
J ( w ) = w H R w + λ ( w H a ( θ 0 ) − 1 ) ( 1 − 5 ) J(w)=w^{H}Rw+λ(w^{H}a(θ_{0})-1) (1-5) J(w)=wHRw+λ(wHa(θ0)1)15
对式(1-5)关于 w w w 求梯度,并令其为零,得到:
▽ J ( w ) = 2 R w − 2 λ a ( θ 0 ) = 0 ( 1 − 6 ) ▽J(w)=2Rw-2λa(θ_{0})=0 (1-6) J(w)=2Rw2λa(θ0)=016
解得: w = λ R − 1 a ( θ 0 ) w=λR^{-1}a(θ_{0}) w=λR1a(θ0) ,将结果代入式(1-3)可得:
λ = 1 a H ( θ 0 ) R − 1 a ( θ 0 ) ( 1 − 7 ) λ=\frac{1}{a^{H}(θ_{0})R^{-1}a(θ_{0})} (1-7) λ=aH(θ0)R1a(θ0)117
将式(1-7)代入求得的权矢量结果中,可得到 MVDR 波束形成器的最优权向量为:
w o p t = R − 1 a ( θ 0 ) a H ( θ 0 ) R − 1 a ( θ 0 ) ( 1 − 8 ) w_{opt}=\frac{R^{-1}a(θ_{0})}{a^{H}(θ_{0})R^{-1}a(θ_{0})} (1-8) wopt=aH(θ0)R1a(θ0)R1a(θ0)18
以上就是 MVDR 波束形成求权值的完整过程。当阵列的阵元个数为 M M M 时,阵列的自由度为 M − 1 M-1 M1,所以 MVDR 波束形成器要求干扰源个数必须小于或等于 M − 1 M-1 M1
在实际情况中,阵列的接收数据协方差矩阵只能在有限次快拍的情况下,用时间平均对采样数据进行估计得到,即:
R ˆ = 1 N ∑ n = 1 N x ( n ) x H ( n ) ( 1 − 9 ) R^{ˆ}=\frac{1}{N}\sum_{n=1}^{N}x(n)x^{H}(n) (1-9) Rˆ=N1n=1Nx(n)xH(n)19
其中, N N N 是采样快拍数, N N N 值越大,估计矩阵 R ˆ R^{ˆ} Rˆ 更接近理想的相关矩阵 R R R

1.3 特点

1.3.1 优点

(1)高分辨率:MVDR算法能够有效地分辨出多个声源的方向,具有较高的分辨率。这使得它在处理复杂声学环境时能够提供更准确的声源定位信息。

(2)鲁棒性强:MVDR算法对噪声和混响信号具有较强的鲁棒性。在存在噪声和混响的环境中,该算法能够较好地保持对声源方向的估计能力,提高系统的稳定性和可靠性。

(3)计算量相对较小:相较于一些更复杂的算法,MVDR算法的计算量相对较小,这使得它在实时性要求较高的应用场景中具有一定的优势。

(4)干扰抑制能力强:MVDR算法通过最小化其他方向的信号功率,能够有效地抑制多径干扰和噪声,提高信号的质量。这在无线通信、声纳和雷达等领域尤为重要。

1.3.2 缺点

(1)远场假设限制:MVDR算法假设声源位于远场,即声源与麦克风阵列之间的距离远大于阵列的尺寸。这一假设限制了算法在近场声源定位中的应用,因为对于近场声源,算法的定位精度会显著下降。

(2)对导向矢量误差敏感:MVDR算法的性能在很大程度上依赖于导向矢量的准确性。如果导向矢量存在误差,将会对算法的估计结果产生较大影响,降低定位精度。

(3)阵列尺寸限制:MVDR算法的性能与阵列尺寸有关。一般来说,阵列尺寸越大,算法的性能越好。然而,在实际应用中,受到成本和空间等因素的限制,阵列尺寸往往无法做到足够大,这可能会限制算法的性能。

(4)计算复杂度较高:尽管相对于一些更复杂的算法而言,MVDR算法的计算量较小,但在实时性要求极高的应用场景中,其计算复杂度仍然可能成为一个挑战。此外,为了获得更好的性能,可能需要对算法进行进一步的优化和加速。

二、算法应用实例

2.1 信号的频率估计

仿真1:对目标信号的到达角进行估计
设一维均匀线阵的阵元数目为8,其间距为半波长,有3个目标信号的到达角分别为-30°,0°,20°,利用MVDR算法对该目标信号进行到达角估计,计算结果如下图所示。
在这里插入图片描述
读者可根据自己的需求,设置阵元数、目标信号个数及目标真实角度、信号的信噪比等条件进行实验。

2.2 MATLAB仿真代码

clc;
clear;
close all;

%% MVDR算法估计到达角
d_lambda = 0.5;         % 阵元间距与波长比
Rx_Num = 8;             % 接收天线阵元数

N = 1000;               % 采样快拍数
sigNum = 3;             % 信源数目
theta0 = [-30,0,20];     % 真实来波角度
snr = 10;               % 信噪比

S = randn(sigNum,N)+1j*randn(sigNum,N);     % 远场窄带信号
A = exp(1j*2*pi*d_lambda*sind(theta0).'*(0:Rx_Num-1)).';     % 导向矢量
X = A*S;                            % 接收信号
Y = awgn(X,snr,'measured');         % 添加噪声的接收信号

R = Y*Y'/N;         % 接收数据的协方差矩阵
R_ = inv(R);        % 协方差矩阵的逆矩阵

thetaScan = (-90:0.1:90);       % 扫描角度范围
As = exp(1j*2*pi*d_lambda*sind(thetaScan).'*(0:Rx_Num-1)).';

num = 0;
P = zeros(1,length(thetaScan));     % 谱峰函数初始化
for ii = thetaScan
    num = num+1;
    P(num) = 1/(As(:,num)'*R_*As(:,num));
end
P = 10*log10(abs(P)/max(abs(P)));   % 对谱峰函数进行归一化并取对数
figure;
plot(thetaScan,P,'b','LineWidth',1);xlabel('扫描角范围');ylabel('归一化幅度/dB');hold on
ylim = get(gca,'Ylim');
for jj = 1:sigNum
    % 画出真实波达角的值进行对比
    line([theta0(jj) theta0(jj)],[ylim(1) ylim(2)],'Color','r','LineStyle','--');
    hold on;
end
legend('MVDR估计值','真实值');

三、参考文献

[1] Capon J. High-resolution frequency-wavenumber spectrum analysis[J]. Proc. IEEE, 1969, 57(8): 1408-1418.
[2] Lacoss R T. Data adaptive spectral analysis methods[J]. Geophysics, 1971, 36(8): 661-675.
[3] 胡君丽.数字阵列接收同时多波束技术研究[D].电子科技大学,2019.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1933400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI初学者的利器——香橙派AIpro

目录 引言香橙派介绍公司简介(来自官网)香橙派AIpro介绍香橙派AIPro硬件规格参数开发板接口详情系统登陆与使用指示灯 AI运行实例AI CPU和control CPU的设置方法香橙派AIpro cpu知识查询AIcpu占用率与cpu类别设置 Juypter lab使用JuypterLab介绍JuypterL…

8款可以替代Axure的设计软件推荐

一个好的原型设计工具对于产品经理或者UI/UX设计师来说非常重要。一个好的原型设计软件可以帮助你快速构建一个还原度高、信息结构清晰的原型图,也可以大大降低工作中与同事的沟通成本,更高效地推进工作。 那么,什么是易于使用和免费的原型设…

C51语言及通用I/O口应用

4.1 C51的程序结构 4.2 C51的数据结构 4.3 C51与汇编的混合编程 4.4 C51仿真开发方法 4.5 通用I/O口的简单应用 4.6 通用I/O口的进阶应用 4.1.1 C51语言概述 C51语言是51单片机的一种高级编程语言,与低级语言的汇编语言相比,一方面具有结构化语…

Chapter12 屏幕后处理效果——Shader入门精要学习笔记

Chapter12 屏幕后处理效果 一、屏幕后处理概述以及基本脚本系统1.OnRenderImage 函数 —— 获取屏幕图像2.Graphics.Blit 函数 —— 使用特定的Shader处理3.在Unity中实现屏幕后处理的基本流程4.屏幕后处理基类 二、调整亮度、饱和度和对比度1.BrightnessSaturationAndContrast…

Postman安装使用教程(详解)

目录 一、Postman是什么 二、安装系统要求 三、下载Postman 四、注册和登录Postman 五、创建工作空间 六、创建请求 一、Postman是什么 在安装之前,让我们先来简单了解一下Postman。Postman是一个流行的API开发工具,它提供了友好的用户界面用于发送…

简单实用的企业舆情安全解决方案

前言:企业舆情安全重要吗?其实很重要,尤其面对负面新闻,主动处理和应对,可以掌握主动权,避免股价下跌等,那么如何做使用简单实用的企业舆情解决方案呢? 背景 好了,提取词…

python CMD命令行传参实现:argparse、click、fire

1、argparse 设置传入和默认参数,也可以通过–help参考具体设置参数 bool值 参考: https://docs.python.org/zh-cn/3/howto/argparse.html https://www.bilibili.com/video/BV1nb41157Zc expected one argumrnt 报错,传入坐标类型字符串…

MYSQL 四、mysql进阶 9(数据库的设计规范)

一、为什么需要数据库设计 二、范 式 2.1 范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。 可以理解为,一张数据表的设计结 构需要满足的某种设计标准的 级别 。要想设计一个结构合理的关系型数据库,必须满足一定的…

couldn‘t read native报错!Typora中使用Pandoc导出Word失败的解决方法

couldn‘t read native报错!Typora中使用Pandoc导出Word失败的解决方法 一、问题描述 在Typora中使用Pandoc将markdown文件导出为word文件时,发生如下图所示错误: 在网上找了资料以后,发现是因为md文件里面有表格,如果把表格删掉…

【深度学习】PyTorch框架(4):初始网络、残差网络 和密集连接网络

1、引言 在本篇文章中,我们将深入探讨并实现一些现代卷积神经网络(CNN)架构的变体。近年来,学界提出了众多新颖的网络架构。其中一些最具影响力,并且至今仍然具有重要地位的架构包括:GoogleNet/Inception架…

linux搭建mysql主从复制(一主一从)

目录 0、环境部署 1、主服务器配置 1.1 修改mysql配置文件 1.2 重启mysql 1.3 为从服务器授权 1.4 查看二进制日志坐标 2、从服务器配置 2.1 修改mysql配置文件 2.2 重启mysql 2.3 配置主从同步 2.4 开启主从复制 3、验证主从复制 3.1 主服务器上创建test…

Stable Diffusion【美女写实模型】:亚洲女性写实大模型,皮肤细腻光滑!

今天介绍一款专注于亚洲女性写实的SDXL模型:XXMix_9realisticSDXL。该模型绘图质量相当出色:面部在真实感基础上增加了一些轻度的美颜效果;以及增强的光影特效方面效果;只需要简单提示语就可以画出典型的亚洲女孩风格高质量图像。…

通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能

效果图: 核心代码: <script lang="ts" setup>import { ref, reactive } from vue;import api from @/request/api.jsimport empty from @/component/empty.vueimport { onLoad,onShow, onPullDownRefresh, onReachBottom } from @dcloudio/uni-applet form …

Gradio技术入门(一)

Gradio是一个开源的Python库&#xff0c;旨在让创建机器学习模型的应用界面变得简单快捷。 官网&#xff1a;格罗特 (gradio.app) 一、基本概述 1&#xff0c;技术概述 1. 定义与用途 Gradio通过Python生成一套HTML页面&#xff0c;其中编写好了大部分的组件&#xff0c;主…

《大数据基础》相关知识点及考点,例题

1.6大数据计算模式 1、MapReduce可以并行执行大规模数据处理任务&#xff0c;用于大规模数据集&#xff08;大于1TB&#xff09;的并行运算。MapReduce 极大地方便了分布式编程工作&#xff0c;它将复杂的、运行于大规模集群上的并行计算过程高度地抽象为两个函数一一Map和Redu…

数据库系统概论:数据库完整性

引言 数据库是现代信息系统的心脏&#xff0c;数据的准确性和一致性对于业务流程至关重要。数据库完整性是确保数据质量的基石&#xff0c;它涵盖了数据的正确性、相容性和一致性&#xff0c;是数据安全与业务连续性的保障。 数据库完整性是指数据的精确性、可靠性和逻辑一致…

Gitee使用教程2-克隆仓库(下载项目)并推送更新项目

一、下载 Gitee 仓库 1、点击克隆-复制代码 2、打开Git Bash 并输入复制的代码 下载好后&#xff0c;找不到文件在哪的可以输入 pwd 找到仓库路径 二、推送更新 Gitee 项目 1、打开 Git Bash 用 cd 命令进入你的仓库&#xff08;我的仓库名为book&#xff09; 2、添加文件到 …

【Unity】升级至API34,编译报错Java Runtime版本问题

文章目录 一、背景二、问题描述三、原因和解决方法 一、背景 1、Unity 2021.3.33f1 2、Firebase 11.7.0 3、Max Unity 6.5.2 3、升级至API-34 二、问题描述 错误信息 Could not load custom lint check jar file C:\Users\xxx.gradle\caches\transforms-2\files-2.1\b27e2aac8…

pnpm build打包时占内溢出

这两天在打包H5网页的时候&#xff0c;失败&#xff0c;总是提示下方错误&#xff0c;试了多种方法下方的亲测有效 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 严重错误&#xff1a;堆限制附近标记压缩无效分…

【字幕】字幕特效入门

前言 最近两周调研了一下字幕特效的底层程序逻辑&#xff0c;因为工作内容的原因&#xff0c;就分享几个自己找的链接具体细节就不分享了&#xff0c;CSDN也是我的个人笔记&#xff0c;只记录一些简单的内容用于后续自己方便查询&#xff0c;顺便帮助一下正在苦苦查阅资料入门…