关于蒙特卡罗方法及其在信号处理中的应用

news2024/9/21 16:24:03

说明

    最近想探讨一下毫米波雷达测量准确度及其改善的问题,这个话题下可供讨论的问题有很多,蒙特卡罗方法(或者说基于蒙特卡罗方法对测量准确度以及精度的评估)是其中之一,该方法是一个十分有效的工具,在科研(发paper)上也是不可少的。在探讨测量的准确度之前,我将先分解并讨论几个小的话题,最后以测量准确度的话题进行汇总。本博文试图捋清楚蒙特卡罗方法及其在信号处理中的应用

Blog

20230520  博文第一次写作

谨以此文献给墨の宝,感谢投喂午餐!祝520快乐!

目录

说明

目录

一、什么是蒙特卡罗方法

二、蒙特卡罗方法在信号处理与算法验证中的作用

三、基于蒙特卡罗方法对车载毫米波雷达测角算法的评估

3.1 评估特定SNR值时,不同角度下,DBF测角算法的准确度和精度

3.2 评估不同SNR下,DBF测角算法的准确度

四、总结

五、参考资料

六、博文相关仿真代码


一、什么是蒙特卡罗方法

    该方法是一种关于概率的实验方法,是由冯诺依曼和乌拉姆等人发明的,蒙特卡罗这个名字取自摩纳哥的蒙特卡罗赌场。那么,什么是关于概率的实验方法它的本质是利用事件发生的频率作为事件发生概率的近似值。举个例子:

图1.1  蒙特卡罗方法讲解示例图

    上图中假设我们不知道圆面积的计算公式,或者知道公式是pi*r^2,但是不知道pi的具体值,(总之我们没法用数值计算的方法得到圆的面积),此时怎么得出圆的面积是多少?一种可行的方法是:用概率的方法推得面积,如果我们在正方形的整个区域内随机生成散点,比如总共随机生成了N个点,然后其中有M个点落在了圆形区域内,那么落在圆形区域的频率为M/N,不难理解的是,当我们实验的次数N足够多,M/N的值会接近于(圆的面积÷正方形的面积),该值也是散点落在圆中的概率,此时我们可以用正方形的面积*(M/N)得到圆的面积。

    再回到我们前文那句话:它的本质是利用事件发生的频率作为事件发生概率的近似值,上面的例子对这句话做出了解释相信已经不难理解了此外,实验的次数需要越多越好(次数越多频率才越接近真实的概率值)这其实和我们高中学概率知识时老师常举的例子类似:当你掷硬币的次数足够多时,硬币正面朝上总次数必然等于所掷次数的一半。

    关于上面的例子,我也写仿真了一下。算法概述和流程为:以圆的中心作为坐标原点,分别在x、y为(-1 1)的范围内随机生成:10、100、100000个点,并判断这些点离坐标原点的距离是否小于或等于1(是,则位于圆内),基于处于圆内的频率*正方形的面积来得到圆的面积。(代码见博文第六章的链接,后面章节的仿真代码我也一同上传了) 。得到的结果如下:

 图1.2 在正方形区域内随机生成的点 结果图

 图1.3  基于蒙特卡罗方法求解圆面积的结果

    可以看到,实验的次数越多,得到的结果越准确(接近真实值)

二、蒙特卡罗方法在信号处理与算法验证中的作用

    前文第一章讲清楚了该方法是什么以及怎么用。该方法和信号处理以及算法验证扯上关系主要是我们可以通过这种方法背后的思想(多次随机试验)来评估信号处理或算法的准确度以及精度

    它的应用场景有很多,这里以车载毫米波雷达的测角算法(关于测角可以参考我之前的博文:车载毫米波雷达DOA估计综述_墨@#≯的博客-CSDN博客)为例说说它的应用。

    比如我们要去评估DBF算法在雷达视场范围内的测角精度和准确度,那么我们可以在视场范围内的每个角度下进行N次蒙特卡罗试验,看看DBF下的测量结果与真实值的差异,并进而得到测量的精度和准确度。

    或者,我们可以去评估不同SNR下使用DBF算法时测量结果的准确度。此时针对特定的SNR,在视场范围内随机生成N次目标,看看DBF下的测量结果与真实值的差异,并进而得到不同SNR下使用DBF算法测量时的准确度。

    后文第三章分别对前述这两种情况进行仿真。

三、基于蒙特卡罗方法对车载毫米波雷达测角算法的评估

    进入后文仿真的内容之前,先弄清楚两个简单的概念:准确度(accuracy)和精度(precision)。这两个概念应该是关于测量准确度那篇博文中的内容,但是这里需要用到,于是先捋一下。

    在做测量时,准确度是我们用以衡量测量值和真实值之间差值大小的一个概念,精度是我们用以衡量测量值之间(各测量值和测量值的均值)离散程度的一个概念。以射箭为例,假如靶心是我们的真实值(10分),而我们每次射箭都偏了几环,射在7分左右,此时可以说我们的准确度不好但是精度不错。准确度和精度是两个独立的概念。

    更具体地,我们可以用RMSE(Root Mean Square Error)均方根误差对测量的准确度进行定量,用SD(Standard Deviation)标准差来定量测量的精度。

                                                                       (3-1)

                                                                             (3-2)

 

3.1 评估特定SNR值时,不同角度下,DBF测角算法的准确度和精度

1、实验说明:

    设定雷达视场范围(测角范围)为±75°,以1°为步进,每度进行100次蒙特卡罗实验,看看DBF算法下不同角度下测量结果的准确度和精度。仿真中,目标的SNR值取12dB,测角阵列为8阵元间隔0.5个波长的均匀阵。

2、实验结果

图3.1  基于蒙特卡罗方法评估不同角度下DBF测角算法的准确度和精度结果

3、实验小结

    从上图可以看到,从大角度接近0°时,RMSE和SD整体来看都是在减小的,阵列的分辨率与孔径大小和目标所在角度有关:

                                                                                                      (3-3)

     当在阵列法线方向时,θ= 0°,此时θres最小,理论上来说测量的准确度和精度都会增加。实验结果与理论是相符合的。

3.2 评估不同SNR下,DBF测角算法的准确度

1、实验说明:

    以5dB为起始SNR值,以2dB为步进,直到55dB。在±75°范围内随机生成1000个目标,看看不同SNR值下,DBF测角算法的准确度。仿真中,测角阵列为8阵元间隔0.5个波长的均匀阵。因为这里是随机生成不同的角度,所以没法求解精度,这里只评估准确度。

2、实验结果

图3.2  基于蒙特卡罗方法评估不同SNR下DBF测角算法的准确度

3、实验小结

    从图中可以看到测量的准确度随着SNR的增加有很明显的改善。测量的准确度主要取决于两个因素:分辨率和SNR,这在本章的实验中有了很好的体现,不过更具体的我将在后面关于测量准确度的博文中给出分析。

四、总结

    本博文试图捋清楚蒙特卡罗方法及其在信号处理中的应用。首先简单介绍了蒙特卡罗方法,并基于该方法进行了求正方形内圆面积的仿真验证,随后探讨了该方法在信号处理中的应用,并以DBF测角算法为例,分别仿真评估了特定SNR值下,DBF算法在不同角度下测量的准确度和精度、以及在不同SNR值下,DBF测角算法的准确度。

    蒙特卡罗方法是一个很好且很实用的工具,本博文中所有的仿真代码见所附的参考资料链接,代码中很多的参数读者可以自行修改,探讨其它参数(比如阵列孔径)下,DBF测角算法的准确度等。本博文如有不妥或需要补充的地方欢迎读者评论,我会不定期更新,我们一起维护。

五、参考资料

六、博文相关仿真代码

关于蒙特卡罗方法及其在信号处理中的应用博文相对应的代码资源-CSDN文库

(好像还在审核中)

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

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

相关文章

UE5 C++类如何读取Excel配置表?

UE5 插件开发指南 前言0 如何编写读取数据的结构体?1 如何读取数据?1.0 如何获取数据资产的路径?2 如何调用商店子系统来读取数据?前言 虚幻引擎兼容CSV和JSON格式的数据结构,这里的CSV是Excel表格的保存格式,如下图所示: 打开任意Excel表格,点击文件菜单,然后鼠标悬浮到…

一文2000字从0到1教你搭建有效的测试环境

作为软件测试行业的从业者,搭建测试环境一定是在工作中少不了的任务安排,那么如何有效的搭建测试环境,咱们今天和大家聊一聊。 首先大家要明白测试环境是为了完成软件测试工作所需要的硬件资源,软件资源,网络资源&…

计算机网络实验(ensp)-​实验2:PPP协议及PAP认证

目录 实验报告: 实验操作 1.建立网络拓扑图并开启设备 2.修改路由器名字 1.输入命名:sys 从用户视图切换到系统视图 2.输入命名:sysname 姓名 修改路由器名字 3.重复步骤1和2配置每台路由器 3.抓包 1.点击菜单栏的“数…

(转载)从0开始学matlab(第7天)—运算的优先级与内置函数

1运算的优先级 许多的数学运算写入一个表达式是非常平常的事。例如,考虑初速度为 0 的匀加速运动的位移表达式 distance 0.5 * accel * time ^ 2 这个表达式有二个乘法运算和一个幂运算。在这样的表达式中,知道运算的先后顺序是十分重要的。如果幂运算先…

Redis系统学习篇-02

目录 redis进阶使用 redis作为数据库、缓存的区别 缓存常见问题、面试回答思路 redis的持久化 参考文档(redis.net.cn):Redis 教程_redis教程 系统学习01篇,总结起来就是,可以把redis想象成一个key/value的hashmap,只不过val…

Linux之路SNAT策略及应用

目录 二、SNAT实验的部署设计 三、具体实验步骤 第一步:做好实验前的虚拟机设置 1)网关服务器的设置 ①添加网卡,修改vmnet ②修改ens33为网关服务器的内网网卡 ③修改新加网卡ens36(这里添加的网卡是什么就用什么&#xff…

FATFS移植 - 基于N32G4FR在SD卡(sd nand)上移植FATFS文件系统

FATFS移植 - 基于N32G4FR在SD卡(sd nand)上移植FATFS文件系统 文章目录 FATFS移植 - 基于N32G4FR在SD卡(sd nand)上移植FATFS文件系统1. 前言2. FATFS文件系统介绍2.1 文件系统的概念和作用2.2 FATFS的特点和优势 3. 相关源码获取3.1 FatFs文件源码下载3.2 国民技术N32软件开发…

我们详细讲讲UI自动化测试最佳设计模式POM

概念 什么是POM? POM是PageObjectModule(页面对象模式)的缩写,其目的是为了Web UI测试创建对象库。 在这种模式下,应用涉及的每一个页面应该定义为一个单独的类,类中应该包含此页面上的页面元素对象和处…

【Java校招面试】实战面经(一)

目录 前言一、单链表找三等分点(链表可能有环)二、讲几个熟悉的设计模式三、Spring IoC、AOP是什么,是如何实现的,Spring MVC是什么?四、怎么实现线程安全,各个实现方法有什么区别,synchronized…

Linux防火墙之iptables(下)

目录 一、通用匹配 1)协议匹配 2)地址匹配 3)接口匹配 二、隐含匹配 1)端口匹配 2)TCP标志位的匹配 3)ICMP的类型匹配 ①请求规则设置 ②回显匹配 ②显示目的不可达匹配 三、显示匹配 1 &…

教你精通Java语法之第十三章、反射

目录 一、定义 二、用途 三、反射基本信息 四、反射相关的类 4.1Class类 4.1.1Class类中的相关方法(方法的使用方法在后边的示例当中) ​编辑 4.2反射示例 4.2.1获得Class对象的三种方式 4.2.2反射的使用 五、反射优点和缺点 六、重点总结 一、定义 Java的反射&am…

计算机图形学 | 实验十:几何纹理(法线贴图)

计算机图形学 | 实验十:几何纹理(法线贴图) 计算机图形学 | 实验十:几何纹理(法线贴图)什么是法线贴图为什么需要切线空间加载法线贴图引入切线空间结果 华中科技大学《计算机图形学》课程 MOOC地址&#…

PCB基础~电源和地平面,去耦电容

电源和地平面 • 应该尽可能的使用电源和地平面, Why? – 在设备和电源之间提供一个低阻抗的路径 – 提供屏蔽 – 提供散热 – 降低分布电感 • 一个完整的无破损的平面是最优选择 – 破碎的地平面会在走线的上下层之间 引入寄生电感 • Remember! • 低频时&…

【服务器】利用树莓派搭建 web 服务器-无需公网IP

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 概述 使用 Raspberry Pi Imager 安装 Raspberry Pi OS 设置 Apache Web 服务器 测试 web 站点 安装静态样例站点 将web站点发布到公网 安装 Cpolar内网穿透 cpolar进行tok…

SQL-DDL语句DQL语句

SQL学习笔记 DDL语句--操作数据表 /* 快捷键: insert键 在插入 和 替换模式之间切换 ctrl 字母z 撤销上一步操作 tab 往后缩进(默认4个空格) shift tab 往前缩进(默认4个空格) …

SpringBoot配置文件和日志

目录 SpringBoot配置文件 SpringBoot配置文件的作用 项目中的重要数据写在配置文件当中 降低代码耦合 SpringBoot配置文件的格式 properties配置文件 读取配置文件中的内容(Value注解使用${}格式读取) properties优缺点 yml配置文件 yml特…

ChatGPT官方APP正式发布!附安装使用教程

目录 前言 APP功能演示 1.与机器人聊天,询问问题 2.语音输入,人机交互 3.聊天历史,新建聊天分组 安装教程 1.下载应用 2.登录账号 3.愉快的玩耍吧 总结 写到最后 大家好,我是大侠,AI领域的专业博主 前言 …

Docker安装常用软件-Kafka集群

零、为了方便开发调试,使用kafka部署一套kafka环境,进行功能调试,方便快捷 一、部署zookeeper 1、下载镜像 docker pull wurstmeister/zookeeper 2、运行zookeeper镜像 docker run -d --restartalways --log-driver json-file --log-op…

(转载)从0开始学matlab(第10天)—自顶向下的编程思想

在前面的内容中,我们开发了几个完全运转的 MATLAB 程序。但是这些程序都十分简单,包括一系列的 MATLAB 语句,这些语句按照固定的顺序一个接一个的执行。像这样的程序我们称之顺序结构程序。它首先读取输入,然后运算得到所需结果&a…

QT学习记录(三)绘图

按照下面两个教程学习 QT学习教程(全面)_Strive--顾的博客-CSDN博客_qt学习 天山老妖S的博客_QT开发(3)_51CTO博客 1、绘图 VC项目右键增加QT GUI Class,在QT Designer中编辑DlgDraw.ui 在DlgDraw中重载函数 void DlgDraw::paintEvent(Q…