PUMA:DOA估计模式的改进实现(Matlab代码实现)

news2025/3/12 11:24:45

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

文献来源:

下载链接:PUMA: An Improved Realization of MODE for DOA Estimation | IEEE Journals & Magazine | IEEE Xplore 

方向估计(MODE)方法具有吸引人的优势,例如渐近效率,计算复杂度适中,并且在处理相干信号方面具有出色的性能,这是传统的基于子空间的方法所不具备的。然而,MODE对根多项式系数的对称性采用了额外的假设和约束,这可能会导致在低信噪比/小样本量的情况下严重的性能下降,因为任何估计误差都会因对称性而放大两次。此外,MODE 的标准实现没有用于更新其估计值的封闭式解决方案。本文证明了MODE的优化问题等价于模态分析的主特征向量利用(PUMA)算法。我们表明,具有闭式解的PUMA,不依赖于对系数的任何额外假设和约束,是最小化相同成本函数的比MODE更好的替代项。我们进行了广泛的仿真结果来支持我们的观点。

到达方向(DOA)估计是许多应用的基本阵列处理问题,例如: 雷达[1]、声纳[2]和无线 通信[3],[4]。它一直是 在过去的四十年中进行了很好的研究,产生了许多高效和准确的算法[5]-[22]。

其中,最大似然(ML)[5]方法能够提供 有效的DOA估计,但以巨大的复杂性为代价,这主要是由于多维搜索。 尽管可以应用牛顿方法等优化替代方法来避免搜索步骤,但全局 由于 ML 目标函数是非凸的,因此不能保证收敛性。基于子空间的DOA估计算法 可以在分辨率和计算复杂度之间提供良好的权衡,并已被广泛研究。 特别是,多重信号分类(MUSIC)[6]和估计 通过旋转不变性技术(ESPRIT)[7]AS的信号参数 亚空间方法的代表因其简单性和高精度而引起了极大的兴趣,并且 他们的许多变体[8]-[18]后来被开发出来。例如 MUSIC算法的计算效率修改已被设计[14]-[18]。 然而,当出现相干/高相关信号时,这些算法的性能会下降,因此需要 退相干技术,例如空间平滑(SS)[19]或 向前-后向SS(FBSS)[20],但代价是丢失阵列 孔径。特别是,已经提出了一个实值版本的root-MUSIC,它被命名为单一的root-MUSIC[18]。该算法利用了制服的中心埃尔米特性质 线性阵列 (ULA) 将复值数据转换为真实空间。此过程等效于执行 一步向前-向后平滑到样本协方差矩阵,因此它最多可以处理两个相干信号。 但是,当有两个以上的相干信号时,酉根音乐算法无法正常工作。

与MUSIC和ESPRIT相比,方向估计(MODE)[21]-[22]的方法非常有趣,因为它比MUSIC具有吸引人的优势 和ESPRIT。其中包括以下内容。

📚2 运行结果

 部分代码:

M = 10;
N = 50;
DOA = [-5, 2, 12];
K = length(DOA);
SNR = linspace(-10,6,11);
nT = 100;

for iS = 1:length(SNR)
    
    snr = SNR(iS);

    for iT = 1:nT
        
        if rem(iT,nT/2) == 0
            fprintf( 'n = %d, Trials = %d, total = %d\n',...
                iS, iT, (iS-1)*nT+iT );
        end
        
        x = StatSigGenerate(M, N, DOA, snr*ones(1,K));
        
        doa1(:,iT) = EPUMA(x, K, K, 3);
        doa2(:,iT) = EPUMA(x, K, K+1, 3);
        doa3(:,iT) = rMUSIC(x, K, 'FBSS', 2);
        [doa4(:,iT),doa5(:,iT)] = MODEX(x, K);
        
    end
    
    RMSE1(iS) = rmse(doa1, DOA);
    RMSE2(iS) = rmse(doa2, DOA);
    RMSE3(iS) = rmse(doa3, DOA);
    RMSE4(iS) = rmse(doa4, DOA);
    RMSE5(iS) = rmse(doa5, DOA);
    
    [x, A, R_idl, Rs] = StatSigGenerate(M, N, DOA, snr*ones(1,K));
    CRB(iS) = crbdet_w(A,R_idl,Rs,DOA,N,1)*(180/pi)^2;
    
end

mz = 8;
lw = 2;

figure
semilogy(SNR, RMSE1.^0.5, '-p', 'markersize', mz, 'linewidth', 2); hold on;
semilogy(SNR, RMSE2.^0.5, '-o', 'markersize', mz, 'linewidth', 2); 
semilogy(SNR, RMSE3.^0.5, '->', 'markersize', mz, 'linewidth', 2);
semilogy(SNR, RMSE4.^0.5, '-*', 'markersize', mz, 'linewidth', 2)
semilogy(SNR, RMSE5.^0.5, '-*', 'markersize', mz, 'linewidth', 2)
semilogy(SNR, CRB.^0.5, 'k', 'linewidth', 2)
xlabel('SNR (dB)'); ylabel('RMSE (degree)');
legend('PUMA', 'EPUMA', 'root-MUSIC', 'MODEX', 'MODE', 'CRB');

M = 10;
N = 50;
DOA = [-5, 2, 12];
K = length(DOA);
SNR = linspace(-10,6,11);
nT = 100;

for iS = 1:length(SNR)
    
    snr = SNR(iS);

    for iT = 1:nT
        
        if rem(iT,nT/2) == 0
            fprintf( 'n = %d, Trials = %d, total = %d\n',...
                iS, iT, (iS-1)*nT+iT );
        end
        
        x = StatSigGenerate(M, N, DOA, snr*ones(1,K));
        
        doa1(:,iT) = EPUMA(x, K, K, 3);
        doa2(:,iT) = EPUMA(x, K, K+1, 3);
        doa3(:,iT) = rMUSIC(x, K, 'FBSS', 2);
        [doa4(:,iT),doa5(:,iT)] = MODEX(x, K);
        
    end
    
    RMSE1(iS) = rmse(doa1, DOA);
    RMSE2(iS) = rmse(doa2, DOA);
    RMSE3(iS) = rmse(doa3, DOA);
    RMSE4(iS) = rmse(doa4, DOA);
    RMSE5(iS) = rmse(doa5, DOA);
    
    [x, A, R_idl, Rs] = StatSigGenerate(M, N, DOA, snr*ones(1,K));
    CRB(iS) = crbdet_w(A,R_idl,Rs,DOA,N,1)*(180/pi)^2;
    
end

mz = 8;
lw = 2;

figure
semilogy(SNR, RMSE1.^0.5, '-p', 'markersize', mz, 'linewidth', 2); hold on;
semilogy(SNR, RMSE2.^0.5, '-o', 'markersize', mz, 'linewidth', 2); 
semilogy(SNR, RMSE3.^0.5, '->', 'markersize', mz, 'linewidth', 2);
semilogy(SNR, RMSE4.^0.5, '-*', 'markersize', mz, 'linewidth', 2)
semilogy(SNR, RMSE5.^0.5, '-*', 'markersize', mz, 'linewidth', 2)
semilogy(SNR, CRB.^0.5, 'k', 'linewidth', 2)
xlabel('SNR (dB)'); ylabel('RMSE (degree)');
legend('PUMA', 'EPUMA', 'root-MUSIC', 'MODEX', 'MODE', 'CRB');
 

🌈3 Matlab代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]C. Qian, L. Huang, M. Cao, H. C. So and J. Xie, "PUMA: An improved realization of MODE for DOA estimation," IEEE Transactions on Aerospace and Electronic Systems, vol. 53, no. 5, pp. 2128-2139, 2017.
[2]The code compares two algorithms, i.e., MODE and PUMA, for DOA estimation. It shows that PUMA and MODE are two different solvers for the same optimization problem, but PUMA works much better than MODE. MODE even does not work for a single-source DOA. 

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

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

相关文章

北京旅游HTML学生网页设计作品 dreamweaver作业静态HTML网页设计模板 北京旅游景点网页作业制作 HTML+CSS+JS

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

口诀速记 DataFrame 指定行列的数据

口诀速记DataFrame 指定行列的数据一、loc函数和iloc函数获取指定行列的数据二、loc和iloc的切片操作三、[] 语法获取指定行列的数据✅作者简介:大家好我是爱康代码 📃个人主页:链接: 点一下这里就进入爱康代码的主页链接,欢迎参观…

深入:9种设计模式在Mybatis中的运用

虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。 Mybatis至少遇到了以下的设计模式的…

接口优化技巧

1. 批量思想:批量操作数据库 优化前: //for循环单笔入库 for(TransDetail detail:transDetailList){insert(detail); }优化后: batchInsert(transDetailList);打个比喻: 打个比喻:假如你需要搬一万块砖到楼顶,你有一个电梯,电…

怎么进行多人配音?建议收藏这些方法

相信不少小伙伴平时在网上冲浪的时候,经常会刷到一些搞笑视频吧。这些搞笑视频的配音,通常都是以一人分饰多角或者是多人互动对话的形式进行配音的。那有没有小伙伴有着不错的搞笑创意点子,但是苦于没有人配音呢?其实我们可以使用…

电脑之间通信的大致过程

本文来自对网络工程师之路内容的个人总结,仅供个人复习参考。 1.电脑之间通信就需要有线路,但是如果多台电脑互相之间需要通信,那么就需要有很多根线,每台电脑需要有多网卡,为了解决这个问题,(集线器)Hub就…

360度内环镜、内螺纹检测镜头、瓶盖检测镜头以及超中心镜头

用于孔洞状物体的360内部成像 提示: 内孔检测光学镜头 从外部检查腔内;无需在孔洞内放置光学探头;带孔对象的360度对焦;腔体内壁和底部都可以实现高分辨率成像;景深可使同一个镜头拍摄具有不同形状和尺寸的物体&…

Bidirectional Recurrent Neural Networks

摘要 a regular recurrent neural network (RNN) →\rightarrow→ a bidirectional recurrent neural network (BRNN)a preset future frame: 预设的未来架构。. Structure and training procedure: 架构和训练程序。TIMIT datab…

Java多线程之:详解ThreadPoolExecutor执行源码分析

文章目录线程池的实现原理详解ThreadPoolExecutor核心数据结构核心配置参数解释线程池的优雅关闭线程池的生命周期正确关闭线程池的步骤shutdown()与shutdownNow()的区别任务的提交过程分析任务的执行过程分析shutdown()与任务执行过程综合分析shutdownNow() 与任务执行过程综合…

【大一大二必看】计算机专业的同学应该参加哪些比赛?

文章目录1. 前言2. ICPC3. CCPC4. 蓝桥杯5. 天梯赛6. CCF CSP7. PAT8. 全国高校计算机能力挑战赛9. 其他🍑 天池大赛🍑 华为软件精英挑战赛🍑 LeetCode 周赛 / 双周赛🍑 CSDN 编程竞赛总结1. 前言 2022 年已经过半,对…

java版商城 b2b2c o2o 多商家入驻商城 直播带货商城 电子商务

一个好的SpringCloudSpringBoot b2b2c 电子商务平台涉及哪些技术、运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管理、商家端(PC端、手机端)、买…

巡检过程中有哪些注意事项?智能巡检了解一下

智能巡检系统是现场过程管理的生产力革命,由人工记录蝶化为掌上电脑运作,适用于设备运行值班记录、仓库/资产管理、设备巡检保养、安全巡更、机房值守、基站维护等一切重复性的工作管理。 安全巡检的目的在于识别信息系统存在的安全脆弱性、分析信息系统…

2022-12-14 移植Qt Creator helloworld 应用到ARM平台运行过程,我这里用buildroot里面的编译器。

一、在ubuntu上运行可执行文件。 1、ubuntu里面安装qt creator 建立helloworld 工程,点击run就可以运行,运行如下。 2、在ubuntu上运行方法二:同级目录下有build-helloworld-Desktop_Qt_5_12_12_GCC_64bit-Debug,用file hellowor…

VS使用技巧汇总

总目录 文章目录总目录前言一、快捷技巧1.代码片段快捷方式2.选择性粘贴3.快速停靠窗口4.多行同步快速编辑5.引用命名空间6.整行上下移动7.规整代码格式二、其他技巧1.其他总结前言 本文会持续收录一些VS的使用技巧,掌握VS一些常用的使用技巧对于提高我们编程效率很…

MA-Net:用于肝脏和肿瘤分割的多尺度注意力网络

摘要 近年来为了提高医学图像分割的性能,提出了大量基于多尺度特征融合的UNet变体。与以往通过多尺度特征融合提取医学图像上下文信息的方法不同,本文提出了一种新的多尺度注意力网格(MA-Net)在这个网络方法中引入了自注意力机制…

Netty使用篇:自定义编解码器

我们今天还是继续Netty,Netty的编码器和解码器就是Netty对Handler这个组件的一种使用场景而已,SpringWebFlex就是基于这个Netty来做的,在往上引深一层GateWay服务网关就是SpringWebFlex的实现,所以SpringCloud当中明确说明了&…

DPDK源码分析之DPDK基础概览

本文主要介绍一下DPDK这项技术的基础概览,包括什么是DPDK,为什么有它存在的必要,它的框架是怎样的,使用了哪些技术实现,DPDK的应用场景有哪些,最后在centos7服务器上实装一个dpdk环境做一个简单的数据包收发…

C++ VTK鼠标网格表面绘制曲线

程序示例精选 C VTK鼠标表面绘制曲线 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 C VTK鼠标表面绘制曲线,功能完善,代码整洁,规则,易读。 文章目录 一、所需…

基于Android的招聘求职网站的设计与实现

毕业设计 基于Android的招聘求职网站的设计与实现 1.课题意义及目标 在二十一世纪求职方式跟以前是不同的,与在各个用人单位和招聘会上寻找理想的工作,基于安卓的招聘系统能够提供最好的最丰富及时的招聘信息。。 通过对该系统的研究设计…

【人工智能与机器学习】——决策树与集成学习(学习笔记)

📖 前言:决策树(Decision Tree)是一种通过对历史数据进行测算,实现对新数据进行分类和预测的算法。机器学习中,决策树是一个预测模型,代表的是对象属性与对象值之间的一种映射关系。该算法由于逻…