2022国赛B题纯方位无源定位:从圆形到锥形编队的建模与MATLAB实现

发布时间:2026/10/17 14:20:30

2022国赛B题纯方位无源定位:从圆形到锥形编队的建模与MATLAB实现 简介本资源为2022年全国大学生数学建模竞赛本科组B题的完整论文PDF聚焦无人机纯方位无源定位问题适合备战数模竞赛的本科生及指导教师参考。论文围绕圆形与锥形编队建立被动接收信号无人机的定位模型与位置调整模型运用二维直角坐标系、余弦定理与“三圆共点”原理推导发射信号无人机数量需求并给出基于步长遍历的迭代调整方案全部求解过程使用MATLAB编程实现。压缩包内仅含1个PDF文件约2.63MB完整呈现摘要、问题重述、模型假设、符号说明及建模求解全过程结构规范便于对照学习。该论文曾获河北省一等奖目前已有8039人学习下载读者可从中获取赛题分析思路、模型构建方法、MATLAB数值计算与可视化技巧以及论文写作与排版参考适合作为数模竞赛的系统学习与实战范本。1. 从2022国赛B题看纯方位无源定位这道题到底考什么很多人第一次看到“无人机纯方位无源定位”这个题名脑子里蹦出来的第一个念头是这到底是几何题还是优化题其实这道2022年全国大学生数学建模竞赛本科组B题本质上考的是三件事——你能不能把物理场景翻译成几何关系能不能用余弦定理把角度和边长串起来能不能用MATLAB把枚举和迭代跑通。它不考高深的算法考的是“基础工具用到位”。拿分的关键在于模型建立要有清晰的坐标系和符号体系求解过程要有可复现的数值方案结果要能回到题目场景里解释。适合正在准备数学建模竞赛、想拿省奖以上、或者想搞懂无源定位基本套路的同学。这道题当年让不少人翻车的地方恰恰不是不会余弦定理而是没想清楚“定位”到底定的是哪个位置。2. 定位模型从三个方位信息反解坐标的完整链路2.1 被动接收信号无人机的实际位置怎么求题目给的条件是圆周上两架无人机和圆心一架无人机发射信号它们位置无偏差另一架无人机被动接收信号位置有偏差。你要做的是根据接收到的三个方位信息反推出这架无人机当前的实际坐标。思路很直接建立二维直角坐标系把发射信号的无人机位置固定接收信号无人机与它们之间的三个夹角已知。设接收信号无人机到三个发射源的距离分别为未知量利用余弦定理在三个三角形中列出方程。三个未知量、三个方程联立求解就能得到三条边的长度。再用一次余弦定理求出接收信号无人机相对于坐标轴的偏角坐标就出来了。这类题通常这么答先画图标清楚哪架是圆心、哪架在圆周、哪架接收信号然后把已知角和已知边标在图上接着写余弦定理的方程组最后解方程给出坐标表达式。面试官或者评阅人最想看到的是你的符号定义是否清晰、方程是否独立、解是否唯一。% 被动接收信号无人机定位模型核心代码 % alpha1, alpha2, alpha3 为接收到的三个方位角 % FY0i, FY0j 为发射信号无人机编号r 为编队半径 a1 sqrt(2*r^2 - cosd(abs(FY0i-FY0j)*40)*2*r^2); % 两发射机之间距离 syms k0 a2 a3 eq1 (k0^2 a3^2 - r^2)/(2*k0*a3) - cosd(alpha1); eq2 (k0^2 a2^2 - r^2)/(2*k0*a2) - cosd(alpha2); eq3 (a2^2 a3^2 - a1^2)/(2*a2*a3) - cosd(alpha3); [X,Y,Z] solve(eq1, eq2, eq3, k0, a2, a3); K0 double(X); % 接收机到圆心的距离 k0i acosd(1 - 2*cosd(alpha1)^2); k01 k0i - 40*abs(i-1); x real(K0*cosd(k01)); % 横坐标 y real(K0*sind(k01)); % 纵坐标这段代码的关键在于a1是两架发射信号无人机之间的弦长用余弦定理和圆周角关系算出三个方程分别对应三个三角形中的余弦定理solve解出的是符号解double转数值。参数r是编队半径题目中圆形编队取100米。注意cosd用的是角度制因为方位信息通常以度为单位给出。2.2 准确位置怎么定三圆共点的几何直觉实际位置求出来了但题目还要你确定“无人机应该到达的准确位置”。这里用到一个关键几何事实一个动点到两个定点的夹角如果是定值这个动点的轨迹是一段圆弧。当有三架位置无偏差的无人机发射信号时接收信号无人机对每两架发射机都有一个夹角对应三条圆弧三条圆弧的交点就是准确位置。这个结论的证明要用到圆周角定理的逆定理。当夹角为钝角时轨迹像一只“眼睛”当夹角为锐角时轨迹像一个“葫芦”。不管哪种形状三条轨迹必然交于一点这一点就是接收信号无人机应当到达的位置。答题时要把这个几何直觉写清楚然后落到公式上用余弦定理把三个夹角表示成已知边和未知边的函数联立求解。评阅人看重的是你有没有把“三圆共点”这个几何条件转化成代数方程。注意这里有一个容易忽略的特殊情况——当夹角是优角时余弦值不变所以模型依然成立。这个细节写进论文里是加分项。3. 额外无人机数量枚举法怎么用才不翻车3.1 为什么一架额外无人机就够了题目第二小问0号和1号已经确定发射信号问还需要额外增加几架发射信号无人机才能让其他所有接收信号无人机都能被准确定位。先想不加的情况只有0号和1号发射信号其他无人机只能接收到一个方位信息。一个方位信息对应一条轨迹轨迹上无数个点都可能无法唯一确定位置。所以不加不行。再加一架呢假设额外选一架无人机发射信号那么接收信号无人机就能收到三个方位信息来自0号、1号、额外那架。三个方位信息对应三条轨迹三条轨迹交于一点位置唯一确定。所以额外加一架就够了。这个逻辑链条要写清楚一个方位信息→一条轨迹→不唯一三个方位信息→三条轨迹→三圆共点→唯一。中间不需要复杂的推导但要把“为什么一个不够、三个刚好”说明白。3.2 枚举56种情况找最优匹配具体到“选哪一架额外发射”需要枚举。除0号和1号外还有8架无人机每架都可能作为额外发射机。对于某一架接收信号无人机遍历所有可能的额外发射机计算三个方位信息的准确值与实际接收值之间的偏差平方和取最小值对应的那架就是答案。% 枚举法确定额外发射信号无人机 min_val 1000; mini 0; for i 2:9 if i FY0k continue; % 跳过接收机自身 end m (beta1 - alpha1(i,FY0k))^2 ... (beta2 - alpha2(i,FY0k))^2 ... (beta3 - alpha3(i,FY0k))^2; if m min_val min_val m; mini i; % 记录最优额外发射机编号 end end这段代码的核心是m的计算三个方位角的偏差平方和。beta1、beta2、beta3是实际接收到的角度alpha1、alpha2、alpha3是理论计算值。遍历所有候选发射机取偏差最小的那个。参数FY0k是接收信号无人机编号循环范围2:9覆盖除0号外的所有圆周无人机。这类题在评阅时评阅人会重点看你的枚举逻辑是否完整、偏差度量是否合理、结果是否可复现。如果你只写“选2号”而不给枚举过程分数会打折扣。3.3 圆形编队位置调整步长遍历的实操细节第三小问要求给出位置调整方案。0号和1号已经在理想位置保持相对关系不变。其他无人机需要调整。调整策略设定步长0.01米向四周全方位遍历。每移动一步计算当前位置与理想位置的偏差当偏差小于0.01米时认为到达理想位置。调整方向分向北和向南两类用极坐标表示位置每次移动后更新极径和极角。% 圆形编队位置调整核心逻辑 njl 0.01; % 最小距离阈值 r 100; % 编队半径 jl 100; % 初始距离设大值 while jl njl mjl 10000; for j 0:359 % 计算当前角度下的位置偏差 % 更新极径和极角 % 记录最小偏差对应的方向 end % 按最优方向移动一步 % 更新 jl end这段代码展示的是迭代框架外层while控制是否达到精度要求内层for遍历360个方向找最优移动方向。参数njl是收敛阈值题目取0.01米r是编队半径。实际写论文时要把每次迭代的极径、极角变化写清楚让评阅人能看到收敛过程。提示调整时间不计这个假设要写进模型假设里否则迭代次数和实际飞行时间的关系会被质疑。4. 锥形编队从圆形到锥形的模型迁移4.1 锥形编队的几何特点与定位难点问题二把圆形编队换成锥形编队。锥形编队的特点是直线上相邻两架无人机间距相等相邻三架构成等边三角形。这个几何结构与圆形编队有本质区别——圆形编队中无人机均匀分布在圆周上角度关系规整锥形编队中无人机分布在多条直线上角度关系更复杂。定位难点在于锥形编队中如果只有两架无人机位置无偏差能提供的方位信息有限。需要先假设两架无人机位置无偏差比如1号和5号用它们去定位第三架比如2号再把2号加入无偏差集合用三架去定位其他。4.2 逐轮定位策略与延长线问题具体策略分轮次第一轮假设1号和5号无偏差。将1号、2号作为发射机5号接收得到一个方位信息将2号、5号作为发射机1号接收得到另一个方位信息。在三角形1-2-5中两个角已知第三个角可求2号位置确定。然后对2号进行位置调整使其到达理想位置。第二轮1号、2号、5号都无偏差。用它们去定位其他无人机。但有一个坑当某架无人机位于1号、2号、5号构成的三角形的边的延长线上时只能接收到一个方向信息无法准确定位。所以4、7、9、11、13、14号无人机在这一轮无法定位。第三轮选取2号、6号、8号作为发射信号无人机剩下未定位的无人机都不在这三架构成的三角形的延长线上全部可以定位。% 锥形编队逐轮定位逻辑 % 第一轮定位2号 % 1号、2号发射5号接收 - 角度1 % 2号、5号发射1号接收 - 角度2 % 三角形内角和 - 角度3 - 2号位置确定 % 第二轮用1、2、5定位其他 % 检查是否在延长线上 % 如果在延长线上跳过留到下一轮 % 第三轮用2、6、8定位剩余 % 所有剩余无人机均可定位这段伪代码展示的是逐轮扩展的思路。关键参数是每轮选哪三架作为发射机以及如何判断某架无人机是否在延长线上。判断方法计算该无人机与三架发射机构成的三角形的角度关系如果某个角接近0或180度说明在延长线上。4.3 锥形编队位置调整与圆形编队的差异锥形编队的位置调整与圆形编队类似也是步长遍历但调整方向不是简单的径向。锥形编队中无人机需要沿锥面调整极坐标的参考点不同。具体来说圆形编队以圆心为极点锥形编队需要以锥顶或某条基准线为参考。调整方案要写清楚每架无人机的目标位置坐标、当前坐标、偏差向量、移动步长、收敛条件。这些细节在论文中要列表给出让评阅人能复现。注意锥形编队的理想位置坐标要用表格列出不能只给公式。表格中要包含无人机编号、x坐标、y坐标单位统一为米。5. 易错点这五类失分操作每年都有人踩5.1 坐标系建错导致余弦定理用反错在哪把圆心放在非原点位置或者把圆周无人机放在非标准角度上导致余弦定理中的边长和角度对应关系混乱。为什么错余弦定理要求三角形三边和夹角严格对应坐标系一乱符号定义就容易混。很多人在论文里写“设某点坐标为(x,y)”但没说明x轴方向、原点位置后面公式全乱。怎么答对统一规定圆心为原点0号无人机在x轴正方向圆周无人机按逆时针编号相邻夹角40度。这个约定写进符号说明里后面所有公式都基于这个约定。5.2 把“实际位置”和“准确位置”搞混错在哪题目问的是建立定位模型确定实际位置但答题时把准确位置的公式套上去或者反过来。为什么错实际位置是根据接收到的方位信息反推的准确位置是根据几何关系正推的。两者的已知条件不同、求解方向不同。混在一起写评阅人看不懂你在求哪个。怎么答对分两段写。第一段已知方位信息求实际坐标用反解。第二段已知发射机位置求准确坐标用正解。两段之间用“同理”或“类似地”过渡但公式要分开列。5.3 枚举法漏情况或重复计数错在哪在确定额外发射机数量时枚举8架无人机但漏了某些组合或者把同一情况算了两次。为什么错组合问题容易漏边界。比如接收信号无人机是2号时额外发射机不能是2号本身这个约束容易忘。另外0号和1号已经确定发射枚举时要从2到9不能包含0和1。怎么答对先写清楚枚举范围除0号、1号和接收机自身外的所有圆周无人机。然后用双重循环或条件判断确保不重不漏。最后用偏差平方和的最小值作为选择依据把最小值对应的编号输出。5.4 位置调整的步长设得太大或太小错在哪步长设成1米调整精度不够设成0.0001米迭代次数爆炸。为什么错步长与收敛速度直接相关。步长太大可能在理想位置附近来回震荡步长太小计算量大且没必要。题目要求精度0.01米步长应该与精度匹配。怎么答对步长取0.01米与收敛阈值一致。每次移动后检查偏差是否小于0.01米是则停止。如果迭代次数超过预设上限比如10000次输出警告信息检查是否有死循环。5.5 锥形编队延长线问题没讨论错在哪直接说“用三架无人机定位其他所有”忽略了延长线上的无人机只能接收一个方向信息。为什么错这是锥形编队特有的几何约束。圆形编队中三架发射机不在一条直线上不会出现延长线问题锥形编队中三架发射机可能共线导致某些位置的无人机无法定位。怎么答对在第二轮定位后明确列出哪些无人机在延长线上、为什么无法定位、留到第三轮用什么组合定位。这个讨论过程本身就是得分点。6. 答题节奏从读题到交卷的实操方法拿到这道题前30分钟不要动笔算。先把题目读三遍把“圆形编队”“锥形编队”“纯方位无源定位”“位置调整”这几个关键词圈出来。然后在草稿纸上画两个图一个圆形编队示意图一个锥形编队示意图。图上标清楚哪些无人机发射信号、哪些接收信号、哪些位置无偏差、哪些有偏差。这个图后面要放进论文里所以画的时候就要规范。接下来确定符号体系。圆心记O圆周无人机按逆时针编号FY01到FY09半径记r方位角记α、β、γ。符号说明表放在论文第三部分每个符号都要有物理含义和单位。这一步花20分钟后面所有公式都靠这套符号不能乱。然后分问题逐个攻。问题一第一小问先建定位模型把实际位置和准确位置的公式分别写出来。第二小问用枚举法确定额外发射机数量把56种情况的表格附上。第三小问写位置调整方案步长、遍历方向、收敛条件都要写清楚。问题二先分析锥形编队的几何特点再写逐轮定位策略最后给位置调整方案。MATLAB代码要提前调通。附录里放四个程序定位模型、额外无人机数量确定、圆形编队调整、锥形编队调整。每个程序都要有注释说明输入参数和输出结果。代码不要贴太长核心逻辑写清楚就行重复部分用省略号。论文写作节奏摘要最后写但要写得最认真。摘要里要把三个问题的模型、方法、结果各用一句话概括。评阅人先看摘要摘要不过关正文写得再好也白搭。我那次带队伍打这个题最大的教训是第一版论文里把“实际位置”和“准确位置”的公式混在一起写评阅反馈说“逻辑不清”。后来重写把两个位置分开成两节每节开头用一句话说明“已知什么、求什么”分数才上去。从那以后我每次写建模论文都强制走一遍“已知-求-公式-结果”四步检查确保每节逻辑自洽。希望帮到你。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/10/17 14:20:30

uniapp跨端开发指南:从环境搭建到性能优化

简介:这是一份《uniapp从入门到精通》完整教程文档,专为希望掌握uni-app跨平台开发的初中级开发者打造。文档从环境搭建起步,涵盖HBuilderX与微信开发者工具的配置、项目创建与多端运行,并深入项目目录结构、开发规范、pages.json…

2026/10/17 14:20:30

AI Agent工具接入为何总翻车?MCP协议实战拆解与标准化方案

先给结论:AI Agent接上工具之后依然难用,问题通常不是模型不够聪明,而是工具这一层太乱。我过去带过好几个工具接入项目,最常见的状态是:OpenAPI文档塞给Agent,函数调用也配了,Demo能跑&#xf…

2026/10/17 14:20:30

AI辅助论文写作全流程实战:选题、框架到降重的人机协作指南

帮人改了三年论文,自己也写过不少稿子,我现在越来越离不开一个习惯:先把思路交给AI捋顺,再动手写正文。这不是偷懒,而是把最耗精力的“从零到一”交给工具,把判断、取舍和深度打磨留给自己。书匠策AI就是我…

2026/10/17 15:35:38

终端AI编程助手Super Code实战:安装配置、使用技巧与避坑指南

1. 为什么我最终选择了"终端里的AI编程助手"而不是再装一个IDE插件先说说我遇到的真实场景。上个月我接手了一个线上服务的排查工作,服务器是Linux环境,所有操作都只能通过SSH终端完成。那台机器上没有装任何IDE,所以我遇到的每个报…

2026/10/17 15:35:38

并发编程核心概念详解:从进程线程到锁与死锁

1. 一切要从“程序卡住”说起你在某个业务系统里写过这样一个功能:批量拉取几百家上游接口的数据,然后逐条清洗入库。第一次跑的时候你发现,整个过程要花四十多分钟,而真正在“计算”的时间其实不到一半,绝大部分时间都…

2026/10/17 15:35:38

基于Spring Boot与MySQL的小型超市管理系统设计与实现

简介:本资源为基于SpringBoot的小型超市管理系统毕业设计全套资料,面向计算机专业学生及Java初学者,解决零售场景下数字化管理断层、供应链信息孤岛与动态决策支持不足等问题。系统采用B/S架构,集成商品分类管理、采购流程优化与销…

2026/10/17 15:35:38

年会大屏抽奖翻车后,我拆解了JS手机号批量滚动抽奖代码

简介:这份资源提供了一套基于JavaScript的手机号批量滚动抽奖实现代码,面向需要为年会、晚会或选秀类活动制作现场抽奖环节的前端开发者与活动策划人员。核心解决随机抽取且不重复、定时器驱动滚动展示、中奖人数可控等实际问题,适合具备基础…

2026/10/17 15:35:38

PyTorch实现神经风格迁移:VGG19与Gram矩阵让照片秒变梵高画作

先问一个我自己也琢磨了很久的问题:当你把一张随手拍的照片丢进某个工具,几秒钟后得到一张星空流转的“梵高版”图片时,你有没有想过,机器到底是怎么把“这张照片里有什么”和“画家的笔触怎么画”这两件事分开的?这背…

2026/10/17 15:30:38

影视聚合源码搭建避坑指南:从解压到播放的完整实践

简介:神马影视8.8源码最新优化版面向视频网站搭建者与后台运维学习者,提供一套经过性能与稳定性改进的在线影视系统源码,适合具备一定PHP与数据库基础、希望研究视频平台后台架构的技术人员参考。压缩包共1个文件,为单个sql数据库…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/17 14:20:58

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑