☰
2022国赛B题无人机纯方位无源定位:三圆共点模型与MATLAB实现
2026/10/31 4:15:20 网站建设 项目流程

简介:这份资源是2022年全国大学生数学建模竞赛本科组B题的完整研究论文,面向备战数模竞赛的高校学生与指导教师,聚焦无人机纯方位无源定位这一典型赛题。论文围绕圆形编队与锥形编队两种场景,建立了基于二维直角坐标系与余弦定理的被动接收信号无人机定位模型,并借助“三圆共点”思想论证了额外增加发射信号无人机数量的必要性,同时给出以0.01米为步长的位置遍历调整方案。资源包内含1个PDF文件,大小约2.63MB,完整呈现摘要、问题重述、模型假设、符号说明与建模求解全过程,并附MATLAB编程实现思路,便于读者对照复现数值计算与轨迹可视化。该论文曾获河北省一等奖,目前已有8040人学习下载,适合需要研读优秀论文结构、学习几何建模与MATLAB求解技巧的参赛者参考借鉴。

1. 这道题真正考的不是无人机:从“三圆共点”看命题人埋的得分点

很多人第一次翻到2022年全国大学生数学建模竞赛本科组B题,注意力全被“无人机”“纯方位无源定位”这些词带走了,以为要懂飞行器、懂信号处理。真坐到电脑前才发现,命题人根本没打算考你硬件,它考的是三件事:能不能把一句几何描述翻译成方程、能不能用余弦定理把角度和边长串起来、能不能把“调整位置”写成一个可迭代的算法。这道题在建模竞赛里属于典型的“几何+枚举+数值搜索”组合题,拿奖的队伍往往不是模型最花哨的,而是把第一问的定位模型推得干净、把第二问的枚举写对、把第三问的步长搜索跑通的那批人。MATLAB在这里不是装饰,符号求解、循环枚举、坐标遍历全靠它落地。下面按考点分布、高频问法、答题思路、易错点一层层拆,你照着练就能把这道题的骨架背下来。

2. 考点分布:这道题到底分几块,每块值多少分

2.1 三小问加一问的权重结构

建模竞赛没有官方分值表,但阅卷时的采分逻辑很稳定:摘要和模型假设占印象分,问题一的三小问是主体,问题二的锥形编队是拉开差距的地方。问题一第一小问考“定位模型建立”,核心是把三个方位角、编队半径、已知无人机编号这些条件转化成二维直角坐标系下的方程组;第二小问考“额外发射机数量”,本质是一个枚举加最小二乘匹配;第三小问考“位置调整方案”,考的是迭代搜索的写法。问题二把圆形换成锥形,考的是模型迁移能力——你能不能看出锥形编队里相邻三架构成等边三角形,能不能复用第一问的定位逻辑。

从血泪经验看,大部分队伍丢分不在思路,而在第一小问的方程没推完整、第二小问的枚举表没算全、第三小问的步长搜索写成死循环。所以复习时不要平均用力,第一小问的余弦定理推导要能默写,第二小问的56种情况要能说清怎么来的,第三小问的0.01米步长遍历要能讲明白终止条件。

2.2 阅卷人最先看的三样东西

翻任何一份获奖论文,前三页一定出现:一张圆形编队的直角坐标系示意图、一组用符号表示的余弦定理方程、一张无人机准确位置坐标表。这三样东西对应三个采分锚点——你有没有把几何关系可视化、有没有把角度条件代数化、有没有把九架圆周无人机的坐标算出来。坐标表看着简单,但很多人栽在角度上:九架无人机均匀分布在圆周上,相邻夹角是40度,第k架的极角就是(k-1)×40度,换算成直角坐标就是(r·cosθ, r·sinθ)。这张表算错,后面所有定位全错,属于典型的“一步错步步错”。

提示:坐标表里的r是编队半径,问题一第三小问明确给了100米,但第一小问建模时建议保留符号r,最后再代入数值,这样模型看起来更通用,阅卷人也更认。

2.3 真题演练:第一小问的定位模型怎么起手

面试或答辩时最常被问的一句是:“给你三个方位角和编队半径,你怎么把接收信号无人机的位置解出来?”标准答法分两步走。第一步,把发射信号的三架无人机坐标固定,其中圆心那架放在原点,圆周上两架按40度间隔定在已知极角上。第二步,对接收信号无人机与每两架发射机组成的三角形分别用余弦定理,把三个方位角写成边长表达式,联立后解出三条距离,再用极坐标转直角坐标得到位置。

用MATLAB写符号求解时,核心就是三个方程三个未知量:

% 已知:r编队半径,alpha1/alpha2/alpha3三个方位角 % FY0i、FY0j为两架圆周发射机编号,圆心机编号为0 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); % 接收机到圆心的距离

这段代码的关键在a1:两架圆周发射机之间的弦长,用余弦定理展开就是2r²(1-cos40°|i-j|),代码里写成2*r^2 - cosd(...)*2*r^2是等价变形。eq1到eq3分别对应接收机与圆心机、与两架圆周机组成的三个三角形,每个方程都是余弦定理的移项形式。solve解出k0后取实部,因为符号解可能带复数分支。参数说明:alpha1是接收机对圆心机和第一架圆周机的张角,alpha2对应圆心机和第二架,alpha3对应两架圆周机。这三个角的定义顺序一旦搞反,方程就全错,这是答辩时最容易被追问的细节。

3. 高频考点:额外发射机数量与“眼睛葫芦”轨迹

3.1 为什么一架不够、两架刚好

第二小问的经典问法是:“0号和1号已经发射信号,还需要额外几架才能让其余无人机准确定位?”面试官最想听的不是“一架”,而是你为什么能排除零架、为什么一架就够。零架时,接收机只能收到一个方位信息,它的可能位置是一条轨迹而不是一个点——这条轨迹就是原文里反复出现的“眼睛”和“葫芦”。当张角是钝角,轨迹是上下对称的两段圆弧拼成的“眼睛”;张角是锐角,轨迹变成“葫芦”。一个约束定不了一个点,所以零架不行。加一架后,接收机拿到三个方位信息,对应三条轨迹,三圆共点交出唯一位置,所以一架就够。再加更多当然也行,但题目问的是“至少”,答一架并给出共点论证才是采分点。

3.2 56种情况怎么枚举,最小二乘怎么落

确定额外发射机时,原文用的是枚举加平方和最小:对某架接收机,遍历除0、1号外所有可能的发射机组合,算出每种组合下三个方位角的“准确值”,再和实际接收到的“偏差值”做差,取平方和最小的那组。组合数是8架里选发射机、排除自身,共56种。这个思路在代码里就是一个双重循环加一个误差累加:

min_err = 1000; best_i = 0; for i = 2:9 if i == FY0k, continue; end % 跳过接收机自身 err = (beta1-alpha1(i,FY0k))^2 + ... (beta2-alpha2(i,FY0k))^2 + ... (beta3-alpha3(i,FY0k))^2; if err <= min_err min_err = err; best_i = i; % 记录最优额外发射机 end end

beta1到beta3是实测方位角,alpha1到alpha3是预计算表里每种组合的理论角,FY0k是接收机编号。这段代码的坑在于alpha表的填充顺序:外层循环是发射机j,内层是接收机k,填表时下标必须和查表时一致,否则最小误差会匹配到错误的发射机。答辩时如果被问“为什么用平方和而不是绝对值和”,答“平方和对大偏差惩罚更重,且与最小二乘估计一致”即可,这是这类匹配题的通用套路。

3.3 真题演练:位置调整的步长搜索怎么写

第三小问的典型问法是:“初始位置有偏差,怎么设计调整方案让无人机回到理想位置?”答题模板是:固定0号和1号不动,先定位2号,用0.01米步长向四周遍历,找到与理想位置偏差小于阈值的方向,调整后再把2号加入“无偏差集合”,依次定位其余无人机。代码骨架是一个极角加距离的双层搜索:

njl = 0.01; % 允许误差,单位米 r = 100; % 编队半径 theta_true = [0 40 80 120 160 200 240 280 320]; % 理想极角 jl = 100; % 初始距离误差,故意设大 while jl > njl mjl = 10000; for j = 0:359 % 极角方向遍历 % 沿j方向走一步,算新位置与理想位置的距离 % 若小于mjl则更新mjl和最优方向 end % 按最优方向移动一个步长,更新jl end

这段代码的逻辑是“贪心下降”:每一轮在360个方向里挑一个让距离误差最小的方向,走0.01米,重复直到误差小于阈值。参数njl就是题目说的“近似到达理想位置”的判据,jl是当前误差,mjl是本轮最小误差。失败时先看jl是否单调下降,如果不降反升,多半是方向遍历的角度步长和坐标换算的三角函数没对齐。这类题面试官最爱追问“步长取大了会怎样、取小了会怎样”,标准答法是:步长大收敛快但可能越过最优点,步长小精度高但迭代次数多,0.01米是题目给的精度和效率折中。

4. 易错点:这五处翻车最多,答辩前必须过一遍

4.1 易错点一:把“定位实际位置”和“定位准确位置”混为一谈

错在哪:很多队伍一上来就假设接收机在理想圆周上,直接套理想坐标算角度,结果第一小问的模型变成了“已知位置求角度”,方向反了。为什么错:题目第一小问要的是“根据接收到的方位信息反推实际位置”,实际位置是略有偏差的,不是理想点。怎么答对:先建实际位置的方程组解出坐标,再单独用三圆共点求理想位置,两个模型分开写,答辩时明确说“前者是反解,后者是轨迹交点”。

4.2 易错点二:余弦定理的角选错,方程对不上

错在哪:三个方位角alpha1/alpha2/alpha3对应的三角形顶点搞混,导致eq1里用了本该属于eq3的边。为什么错:方位角的定义是“接收机与两架发射机连线之间的夹角”,每换一对发射机,角的顶点就换一次,不画图直接写方程必错。怎么答对:先在纸上把三类位置关系画出来,标清每个角对应哪两条边,再写方程;代码里给每个alpha加注释说明它对应哪两架机。

4.3 易错点三:枚举表只算了一半情况

错在哪:56种情况里漏掉对称组合,或者把发射机和接收机的下标顺序弄反,导致查表时匹配到错误结果。为什么错:表格是“横向接收、纵向发射”,填表和查表的下标约定必须一致,很多人填的时候按发射机外层循环,查的时候按接收机外层,直接错位。怎么答对:填表和查表用同一个双重循环模板,先固定接收机再遍历发射机,或者反过来,全篇统一。

4.4 易错点四:锥形编队直接套圆形公式

错在哪:问题二把圆形换成锥形后,仍然用40度间隔算坐标,结果等边三角形的边长关系全错。为什么错:锥形编队里相邻三架构成等边三角形,间距相等但角度关系变了,不能沿用圆周的极角公式。怎么答对:先画出锥形编队的等边三角形网格,用边长和60度角重新推坐标,再复用第一问的“两角定第三角”定位逻辑。

4.5 易错点五:步长搜索写成死循环

错在哪:while循环里误差jl没有正确更新,或者方向遍历后没有真正移动位置,程序跑一晚上不出结果。为什么错:贪心搜索每轮必须更新当前坐标和误差,只算方向不移动等于原地打转。怎么答对:每轮结束前显式更新坐标和jl,并加一个最大迭代次数兜底,答辩时主动说“我设了迭代上限防止不收敛”。

5. 答题技巧:从读题到交卷的四步固定动作

带过几轮队伍之后,我总结出一个最稳的节奏,四步走,每一步都有明确的产出物,不靠临场发挥。

第一步,读题先画图。拿到“纯方位无源定位”这种描述,别急着写公式,先在纸上把圆心机、两架圆周机、接收机的位置关系画成三类情况图,标出每个方位角对应哪两条边。这张图直接决定后面方程对不对,画完拍下来贴在论文模型建立部分,阅卷人一眼就能看懂你的几何设定。

第二步,符号先于数值。第一小问的方程全部用r、alpha、编号符号写,最后再代r=100。这样做的好处是模型看起来通用,而且答辩被问“半径变了怎么办”时你能直接说“符号解不变,只改代入值”。坐标表可以给数值,但方程一定保留符号。

第三步,枚举表先小规模验证。56种情况不要一上来就全算,先取两三组手算核对,确认下标顺序和角度定义一致,再跑全表。这一步能挡掉大部分“表填错导致匹配错”的翻车。

第四步,调整方案先写终止条件。步长搜索的代码,先把njl=0.01和最大迭代次数写在最前面,再写循环体。答辩时主动交代“精度阈值来自题目,迭代上限是我加的工程保护”,这句话很加分,说明你知道数值方法会不收敛。

步骤产出物答辩时的一句话
画图三类位置关系示意图方位角对应关系在图上一目了然
符号建模含r和alpha的方程组模型对任意半径成立
枚举验证小规模核对表下标约定全篇统一
搜索兜底阈值加迭代上限数值方法有收敛保护

从那以后我每次带队伍做几何类建模题,都强制先画三类情况图再动笔写方程,这个习惯至少省掉了一半的返工。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询