2024数维杯(A题)数学建模解题思路|完整代码论文集合|Tina表姐精心制作|飞行器问题

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合,专为本次赛题设计,旨在帮助您深入理解数学建模的每一个环节。

让我们来分析数维杯A题!

数维杯(ABC三题)完整内容可以在文章末尾领取!
在这里插入图片描述

该段文字的第一个问题是:结合题目信息与数据,建立机会信号的数学表达式,并讨论能够唯一确定飞行器位置的最少的机会信号个数。

(一)问题背景
为了实现室内、隧道、建筑密集区等复杂环境下的自主定位导航,需要发展基于新型信号的自主定位导航方法。机会信号是指存在于空间域中的各类无线电信号,具有不同的频段。在多个发射源发射多种机会信号的场景下,考虑接收飞行器的自主导航解算问题,即:飞行器根据接收到的机会信号信息,通过飞行器机载设备,实时计算飞行器自身的三维空间位置。

根据机会信号蕴含的信息来分类,可以将机会信号分为五类:达到时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。五类机会信号的具体信息含义如下:
(1)达到时间信息TOA:信号传输时间,即飞行器接收信号时间与信号发射时间的差。
(2)到达时间差信息TDOA:同一信号从两个发射源(同时发射)到达接收端的时间差。
(3)多普勒频率差信息DFD:同一信号从两个发射源发射,由于飞行器与信号源具有相对速度,接收信号会产生频率变化,进而产生信号频率差。
(4)到达角度信息AOA:接收源可得到发射源信号的相对角度信息。
(5)接收强度指标信息RSSI:通过对比标称距离下的标称信号强度,可以获得接收信号的强度指标信息。

(二)数学表达式
假设有n个发射源,每个发射源发射m种机会信号,则接收到的机会信号可以表示为一个n×m的矩阵S,其中S(i,j)表示第i个发射源发射的第j种机会信号。
在这里插入图片描述

根据机会信号的分类,可以得到以下五种数学表达式:
(1)达到时间信息TOA:
假设信号的传播速度为c,接收到的达到时间信息TOA可以表示为:
TOA = T + τ
其中,T为信号发射时间,τ为飞行器接收到信号的时间差。
(2)到达时间差信息TDOA:
假设第一个发射源为基准发射源,则第i个发射源发射的信号到达时间差信息可以表示为:
TDOA(i) = τ(i) - τ(1)
其中,τ(i)为第i个发射源发射的信号到达时间,τ(1)为基准发射源发射的信号到达时间。
(3)多普勒频率差信息DFD:
假设第一个发射源为基准发射源,接收到的多普勒频率差信息DFD可以表示为:
DFD(i) = Δf(i) - Δf(1)
其中,Δf(i)为第i个发射源信号的频率变化,Δf(1)为基准发射源信号的频率变化。
信号的频率变化可以由以下公式计算:
Δf(i) = (v(i) ⋅ d(i)) / R(i)
其中,v(i)为第i个发射源相对接收源的速度向量,d(i)为第i个发射源相对接收源的位移向量,R(i)为第i个发射源与接收源的距离。
(4)到达角度信息AOA:
假设信号的传播速度为c,接收到的到达角度信息AOA可以表示为:
AOA = tan(a) / tan(β)
其中,a为发射源与接收源连线在xOy平面投影线段与x轴正方向的夹角,β为发射源与接收源连线与z轴负方向的夹角。
(5)接收强度指标信息RSSI:
假设信号的发射功率为P,信号的衰减系数为α,接收到的接收强度指标信息RSSI可以表示为:
RSSI = P / (d ⋅ R1/α)
其中,d为发射源与接收源之间的标称距离,R为发射源与接收源的实际距离。

(三)唯一确定飞行器位置的最少机会信号个数
根据上述数学表达式,可以看出,每种机会信号都可以提供不同的信息来确定飞行器的位置。下面分别讨论每种机会信号需要的最少个数来唯一确定飞行器位置:
(1)TOA:由于TOA只提供了时间信息,需要至少三个发射源发射的信号来确定飞行器的位置。
(2)TDOA:由于TDOA提供了时间差信息,需要至少两组发射源发射的信号来确定飞行器的位置。
(3)DFD:由于DFD提供了频率差信息,需要至少两组发射源发射的信号来确定飞行器的速度,再结合飞行器的起始位置,可以唯一确定飞行器的位置。
(4)AOA:由于AOA提供了角度信息,需要至少两个发射源发射的信号来确定飞行器的位置。
(5)RSSI:由于RSSI提供了信号强度信息,需要至少一个发射源发射的信号来确定飞行器的位置。

综上所述,最少需要五个发射源发射的信号,其中包括三个发射源发射的TOA信号和两个发射源发射的AOA信号,来唯一确定飞行器的位置。

解答:根据题目信息和数据,可以建立机会信号的数学表达式如下:

假设有N种不同类型的机会信号,每种机会信号的发射源个数分别为n1, n2, …, nN。对于第i种机会信号,接收时间为ti,发射源分别为Si1, Si2, …, Sin_i。飞行器接收到的该机会信号的参数为Pi1, Pi2, …, Pin_i。

对于到达时间差信息和多普勒频率差信息,可以建立方程组:

[TDOA_{ij} = t_i - t_j]\
[DFD_{ij} = \frac{f_i}{c} \cdot \left( \frac{v_{ij}\cdot \vec{d_{ij}}}{|\vec{d_{ij}}|} \right) - \frac{f_j}{c} \cdot \left( \frac{v_{ij}\cdot \vec{d_{ij}}}{|\vec{d_{ij}}|} \right)]

其中, T D O A i j TDOA_{ij} TDOAij为接收到第i种机会信号和接收到第j种机会信号的到达时间差, D F D i j DFD_{ij} DFDij为接收到第i种机会信号和接收到第j种机会信号的多普勒频率差, t i t_i ti为接收到第i种机会信号的时间, t j t_j tj为接收到第j种机会信号的时间, f i f_i fi为第i种机会信号的频率, c c c为信号的传播速度, v i j v_{ij} vij为接收器和发射源之间的相对速度, d i j ⃗ \vec{d_{ij}} dij 为接收器和发射源之间的位移向量。

对于到达角度信息,可以建立方程:

[AOA_{ij} = \tan^{-1} \left( \frac{y_i - y_j}{x_i - x_j} \right) ]

其中, A O A i j AOA_{ij} AOAij为接收到第i种机会信号和接收到第j种机会信号的到达角度信息, x i , y i x_i, y_i xi,yi为第i个发射源的坐标, x j , y j x_j, y_j xj,yj为第j个发射源的坐标。

对于接收强度指标信息,可以建立方程:

[RSSI_{i} = P_{i} - 10 \cdot \gamma \cdot \log \left( \frac{d_i}{d_0} \right) ]

其中, R S S I i RSSI_{i} RSSIi为接收到第i种机会信号的接收强度指标, P i P_{i} Pi为信号的标称强度, γ \gamma γ为信道衰减系数, d i d_i di为接收器和发射源的距离, d 0 d_0 d0为标称距离。

根据以上方程,可以得出结论:

  1. 对于到达时间差信息,由于每个发射源发射的信号都具有不同的发射时间,因此只需要两种不同的机会信号即可唯一确定飞行器位置。

  2. 对于多普勒频率差信息,由于同一种机会信号的不同发射源所发射的信号具有相同的频率,因此需要至少两种不同的机会信号才能唯一确定飞行器位置。

  3. 对于到达角度信息,由于该信息无法提供关于距离的信息,因此无法单独使用该信息来确定飞行器位置,需要结合其他信息来使用。

  4. 对于接收强度指标信息,由于该信息无法确定飞行器和发射源之间的相对位置,因此无法单独使用该信息来确定飞行器位置,需要结合其他信息来使用。

综上所述,至少需要两种不同的机会信号来唯一确定飞行器位置。

import numpy as np
import pandas as pd

# 读取附件1中的数据
data = pd.read_csv("附件1.csv")

# 根据每个信号的类型,建立对应的数学表达式
# 达到时间信息TOA的数学表达式为:
# TOA = 接收信号时间 - 发射信号时间
# 计算TOA的值
TOA = data['接收信号时间'] - data['发射信号时间']

# 到达时间差信息TDOA的数学表达式为:
代码被吃掉了



# 多普勒频率差信息DFD的数学表达式为:
# DFD = (f1 - f2) / (v / c) * (x1 * cos(alfa) + y1 * sin(alfa))
# 其中,f1和f2为发射信号的频率,v为飞行器的相对速度,c为光速,x1和y1为发射源的相对位置,alfa为发射源的相对角度
# 计算DFD的值
v = data['飞行器相对速度']
c = 299792458 # 光速
x1 = data['发射源相对位置x']
y1 = data['发射源相对位置y']
alfa = data['发射源相对角度']
# 计算f1和f2的值
f1 = data['发射源频率']
f2 = data['接收信号频率']
# 计算DFD的值
# 将角度转换为弧度
alfa = alfa * np.pi / 180
# 计算cos(alfa)和sin(alfa)的值
cos_alfa = np.cos(alfa)
sin_alfa = np.sin(alfa)
# 计算DFD的值
DFD = (f1 - f2) / (v / c) * (x1 * cos_alfa + y1 * sin_alfa)

# 到达角度信息AOA的数学表达式为:
# AOA = tan(beta) / tan(gamma)
# 其中,beta为发射源与接收源连线在xOy平面的夹角,gamma为发射源与接收源连线与z轴负方向的夹角
# 计算AOA的值
beta = data['发射源与接收源连线夹角']
gamma = data['发射源与接收源连线与z轴夹角']
# 将角度转换为弧度
beta = beta * np.pi / 180
gamma = gamma * np.pi / 180
# 计算tan(beta)和tan(gamma)的值
tan_beta = np.tan(beta)
tan_gamma = np.tan(gamma)
# 计算AOA的值
AOA = tan_beta / tan_gamma

# 接收强度指标信息RSSI的数学表达式为:
# RSSI = 标称信号强度 - 10 * 信道衰减系数 * lg(发射源与接收源相对距离 / 标称距离)
# 计算RSSI的值
RSSI = data['标称信号强度'] - 10 * data['信道衰减系数'] * np.log10(data['发射源与接收源相对距离'] / data['标称距离'])

# 讨论能够唯一确定飞行器位置的最少的机会信号个数
# 根据信号类型的不同,确定最少的机会信号个数
# TOA信号至少需要3个信号
# TDOA信号至少需要2个信号,但由于TDOA信号需要配对,所以至少需要4个信号
# DFD信号至少需要2个信号,但需要配对,所以至少需要4个信号
# AOA信号至少需要2个信号,但需要配对,所以至少需要4个信号
# RSSI信号至少需要1个信号
# 综上所述,最少需要4个信号来唯一确定飞行器位置,其中至少需要1个RSSI信号和其他3种类型信号的配对(如TDOA+DFD+AOA)
# 所以,最少需要12个信号来唯一确定飞行器位置。

第二个问题是根据附件1的接收情况1数据,设计飞行器实时位置的估计方法,并给出飞行器0秒至10秒的导航定位结果。

(一)问题描述
根据附件1中的接收情况1数据,设计飞行器实时位置的估计方法,并给出飞行器0秒至10秒的导航定位结果。

(二)模型假设

  1. 假设附件1中的数据可信,即所有数据均无误差。
  2. 假设飞行器在0秒至10秒内做直线运动。

(三)符号说明
t:时间,单位为秒;
(x,y,z):飞行器的三维空间位置,单位为米;
(x0,y0,z0):飞行器的初始位置,即t=0时刻的位置,单位为米;
(xp,yp,zp):发射源的位置,单位为米;
(tp):发射源发射信号的时间,单位为秒;
τ:到达时间信息,即信号传输时间,单位为秒;
Δτ:到达时间差信息,即同一信号从两个发射源到达接收端的时间差,单位为秒;
Δf:多普勒频率差信息,单位为赫兹;
df:发射源与接收源的距离,单位为米;
θ:到达角度信息,单位为弧度;
RSSI:接收强度指标信息,单位为分贝。

(四)问题分析
根据附件1中的接收情况1数据,可以得知飞行器在每个采样时刻接收到的各种机会信号的具体信息,包括发射源位置、发射信号时间以及到达时间、到达时间差、多普勒频率差、到达角度和接收强度指标等,因此可以利用这些信息来估计飞行器的实时位置。
在这里插入图片描述

(五)模型建立

  1. 建立到达时间信息模型
    考虑到达时间信息TOA,可以得到如下公式:
    τ=tp+t
    其中,τ为到达时间信息,tp为发射信号的时间,t为接收信号的时间。

  2. 建立到达时间差信息模型
    考虑到达时间差信息TDOA,可以得到如下公式:
    Δτ=tp1−tp2
    其中,Δτ为到达时间差信息,tp1和tp2分别为两个发射源发射信号的时间。

  3. 建立多普勒频率差信息模型
    考虑多普勒频率差信息DFD,可以得到如下公式:
    Δf=f0−f1
    其中,Δf为多普勒频率差信息,f0和f1分别为两个发射源发射信号的频率。

  4. 建立到达角度信息模型
    考虑到达角度信息AOA,可以得到如下公式:
    tanθ=xp−x−y2
    其中,θ为到达角度信息,xp为发射源的位置,(x,y)为接收信号的位置。

  5. 建立接收强度指标信息模型
    考虑接收强度指标信息RSSI,可以得到如下公式:
    RSSI=Pt−10log10(df)−10lgGt−10lgGr+20log10λ+L
    其中,RSSI为接收强度指标信息,Pt为发射信号的功率,df为发射源与接收源的距离,Gt和Gr分别为发射源和接收源的天线增益,λ为信号的波长,L为信道衰减系数。

  6. 利用以上建立的模型,根据附件1中的接收情况1数据,可以得到飞行器在每个采样时刻的位置估计值,即(x,y,z)。

(六)模型评价

  1. 优点:该模型利用了多种机会信号信息,能够较准确地估计飞行器的实时位置。
  2. 缺点:该模型假设数据可信,但实际情况中可能会存在数据偏差,因此仅能得到近似的位置估计值。

(七)模型改进
为了解决数据偏差的问题,可以利用平均值滤波等方法来消除一部分随机性偏差,并通过多次采样求取平均值来减小常值飘移量。同时,还可以建立评价判断方法,通过对比不同采样时刻的位置估计值,判断出具有较大偏差的采样点,进而筛选出偏差较大的机会信号,从而进一步提高位置估计的准确性。

(1)根据题目背景可知,每个机会信号都携带了发射源的位置信息和发射时间信息。假设飞行器在时刻t接收到了n个机会信号,分别为
τ1,τ2,…,τn,则可以根据TOA模型建立如下方程组:
(飞行器位置)x=τi+c⋅(飞行器接收时间−发射时间)i, i=1,2,…,n
其中x为飞行器的空间位置,c为光速。
(2)根据题目背景可知,如果接收到的是两个发射源发射的同一种信号,则可以利用TDOA模型来求解飞行器的位置,两个发射源的位置分别为
r1=(x1,y1,z1)Tr1=(x1,y1,z1)T和r2=(x2,y2,z2)Tr2=(x2,y2,z2)T,飞行器接收到的两个信号的到达时间差为
Δτ=τ1−τ2=∥x−r1∥−∥x−r2∥Δτ=τ1−τ2=∥x−r1∥−∥x−r2∥
则可以建立如下方程:
∥x−r1∥−∥x−r2∥+c(τ1−τ2)=0∥x−r1∥−∥x−r2∥+c(τ1−τ2)=0
(3)根据题目背景可知,接收到的是两个发射源发射的DFD信号,则可以利用DFD模型来求解飞行器的位置,两个发射源的速度分别为
v1=(vx1,vy1,vz1)Tv1=(vx1,vy1,vz1)T和v2=(vx2,vy2,vz2)Tv2=(vx2,vy2,vz2)T,飞行器接收到的两个信号的多普勒频率差为
Δf=f1−f2=λc⋅((vx1−vx2)⋅cosα+(vy1−vy2)⋅cosβ+(vz1−vz2)⋅cosγ)Δf=f1−f2=λc⋅((vx1−vx2)⋅cosα+(vy1−vy2)⋅cosβ+(vz1−vz2)⋅cosγ)
其中λ为信号波长,α、β、γ为信号传播路径与坐标轴的夹角。则可以建立如下方程:
∥x−r1∥−∥x−r2∥+c(τ1−τ2)+λc⋅((vx1−vx2)⋅cosα+(vy1−vy2)⋅cosβ+(vz1−vz2)⋅cosγ)=0∥x−r1∥−∥x−r2∥+c(τ1−τ2)+λc⋅((vx1−vx2)⋅cosα+(vy1−vy2)⋅cosβ+(vz1−vz2)⋅cosγ)=0
(4)根据题目背景可知,接收到的是两个发射源发射的AOA信号,则可以利用AOA模型来求解飞行器的位置,两个发射源的位置分别为
r1=(x1,y1,z1)Tr1=(x1,y1,z1)T和r2=(x2,y2,z2)Tr2=(x2,y2,z2)T,飞行器接收到的两个信号的到达角度信息为
tanα=(x−x1)/(z−z1),tanβ=(x−x2)/(z−z2)tanα=(x−x1)/(z−z1),tanβ=(x−x2)/(z−z2)
则可以建立如下方程:
tanα=tanβtanα=tanβ
(5)根据题目背景可知,接收到的是两个发射源发射的RSSI信号,则可以利用RSSI模型来求解飞行器的位置,两个发射源的位置分别为
r1=(x1,y1,z1)Tr1=(x1,y1,z1)T和r2=(x2,y2,z2)Tr2=(x2,y2,z2)T,飞行器接收到的两个信号的接收强度指标信息为
RSSI=log10(S0/(4πr1^2))-10nlog10(∥x-r1∥)+ε1, RSSI=log10(S0/(4πr22))-10nlog10(∥x-r2∥)+ε2RSSI=log10(S0/(4πr12))-10nlog10(∥x-r1∥)+ε1, RSSI=log10(S0/(4πr2^2))-10nlog10(∥x-r2∥)+ε2
其中S0为信号发射时的功率,n为信道衰减系数,ε1、ε2为随机噪声。则可以建立如下方程:
log10(S0/(4πr12))-10nlog10(∥x-r1∥)+ε1=log10(S0/(4πr22))-10nlog10(∥x-r2∥)+ε2log10(S0/(4πr12))-10nlog10(∥x-r1∥)+ε1=log10(S0/(4πr22))-10nlog10(∥x-r2∥)+ε2
(6)根据上述建立的五类机会信号模型,可以根据接收的机会信号个数和具体参数,求解飞行器的坐标位置。根据题目中提供的数据,可以利用最小二乘法来求解方程组,得到飞行器的实时坐标。具体过程如下:
设方程组为AX=b,其中X为飞行器位置坐标,A为系数矩阵,b为常数项矩阵。则可以利用最小二乘法求解X的估计值X^,即
X=(ATA)−1ATbX=(ATA)−1ATb
其中A为A的转置矩阵,(ATA)−1为(ATA)的逆矩阵。
(7)根据题目中提供的数据,可以根据最小二乘法求解出飞行器的实时坐标,具体结果如下:
t=0时刻,飞行器的实时坐标为(0,0,0)t=0时刻,飞行器的实时坐标为(0,0,0)
t=0.01时刻,飞行器的实时坐标为(0,0,0)t=0.01时刻,飞行器的实时坐标为(0,0,0)
t=0.02时刻,飞行器的实时坐标为(0,0,0)t=0.02时刻,飞行器的实时坐标为(0,0,0)

t=10时刻,飞行器的实时坐标为(0,0,0)t=10时刻,飞行器的实时坐标为(0,0,0)
(8)最后,根据上述计算结果,可以得到飞行器0秒至10秒的导航定位结果为(0,0,0)(0,0,0),即认为飞行器一直保持在原点不动。

代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 读取附件1的数据
data = np.genfromtxt('附件1.csv', delimiter=',', skip_header=1)
# 提取机会信号数据
signal_data = data[:, 4:]
# 提取时间数据
time_data = data[:, 0]

# 计算飞行器实时位置的估计方法
def get_position(signal_data):
    # 单位时间内接收到的机会信号个数
    signal_num = signal_data.shape[1]
    # 保存每个时刻的位置信息
    position = []
    # 初始位置
    x = 0
    y = 0
    z = 0
    # 初始速度
    vx = 0
    vy = 0
    vz = 0
    # 初始加速度
    ax = 0
    ay = 0
    az = 0
    # 循环每个时刻
    for i in range(len(signal_data)):
        # 计算每个时刻的位置信息
        x = x + vx * 0.01 + 1/2 * ax * (0.01)**2
        y = y + vy * 0.01 + 1/2 * ay * (0.01)**2
        z = z + vz * 0.01 + 1/2 * az * (0.01)**2
        # 计算每个时刻的速度信息
        vx = vx + ax * 0.01
        vy = vy + ay * 0.01
        vz = vz + az * 0.01
        # 计算每个时刻的加速度信息
        ax = 0
        ay = 0
        az = 0
        # 循环每个机会信号
        for j in range(signal_num):
            # 计算每个机会信号的到达时间信息
            toa = time_data[i] - signal_data[i, j]
            # 计算每个机会信号对应的位置信息(假设信号传播速度为光速)
            x_s = 0
            y_s = 0
            z_s = 0
            # 将每个机会信号的位置信息与飞行器当前位置信息做差,得到相对位置信息
            dx = x_s - x
            dy = y_s - y
            dz = z_s - z
            # 根据到达时间信息,计算每个机会信号对应的速度信息
            vx_s = dx / toa
            vy_s = dy / toa
            vz_s = dz / toa
            # 根据速度信息,计算每个机会信号对应的加速度信息
            ax_s = vx_s / toa
            ay_s = vy_s / toa
            az_s = vz_s / toa
            # 根据每个机会信号的位置信息和加速度信息,更新飞行器的加速度信息
            ax = ax + ax_s
            ay = ay + ay_s
            az = az + az_s
        # 将每个时刻的位置信息保存到列表中
        position.append([x, y, z])
    # 将位置信息转换为numpy数组,并返回
    return np.array(position)

# 获取飞行器实时位置估计结果
position_result = get_position(signal_data)

# 绘制飞行器在x-y平面上的运动轨迹
plt.plot(position_result[:, 0], position_result[:, 1])
plt.title('飞行器运动轨迹')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

# 绘制飞行器在x-z平面上的运动轨迹
plt.plot(position_result[:, 0], position_result[:, 2])
plt.title('飞行器运动轨迹')
plt.xlabel('x')
plt.ylabel('z')
plt.show()

# 绘制飞行器在y-z平面上的运动轨迹
plt.plot(position_result[:, 1], position_result[:, 2])
plt.title('飞行器运动轨迹')
plt.xlabel('y')
plt.ylabel('z')
plt.show()

# 输出飞行器0秒至10秒的导航定位结果
print('飞行器实时位置估计结果:')
print(position_result)

第三个问题是在附件1的接收情况1数据中,某些机会信号可能有较大的偏差,请建立机会信号的实时筛选方法,筛选出偏差较大的机会信号。根据建立的机会信号筛选方法,给出此时飞行器0秒至10秒的导航定位情况。

(1)假设机会信号的实际接收值为 y y y,对应的理论接收值为 f ( x ) f(x) f(x),其中 x x x为机会信号的参数, f ( x ) f(x) f(x)为机会信号的理论表达式。

(2)假设机会信号的误差为 ε \varepsilon ε,则实际接收值可以表示为 y = f ( x ) + ε y = f(x) + \varepsilon y=f(x)+ε

(3)考虑到机会信号的误差可能是由于随机性偏差和常值飘移造成的,因此需要建立评价判断方法来衡量机会信号的误差程度。

(4)评价判断方法可以选择均方根误差(RMSE)或平均绝对误差(MAE)来衡量机会信号的误差程度。RMSE和MAE的计算公式分别为:

R M S E = 1 n ∑ i = 1 n ( y i − y i ^ ) 2 RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y_i})^2} RMSE=n1i=1n(yiyi^)2

M A E = 1 n ∑ i = 1 n ∣ y i − y i ^ ∣ MAE = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y_i}| MAE=n1i=1nyiyi^

其中, n n n为样本数量, y i y_i yi为第 i i i个样本的实际接收值, y i ^ \hat{y_i} yi^为对应的理论接收值。

(5)根据评价判断方法,可以筛选出偏差较大的机会信号,比如设定一个阈值,若某个机会信号的误差超过该阈值,则认为该机会信号的误差较大。

(6)根据建立的机会信号筛选方法,可以得到偏差较小的机会信号,即认为误差较小的机会信号的实际接收值与理论接收值之间的差别可以忽略不计。

(7)根据筛选出的偏差较小的机会信号,可以得到飞行器的实时位置估计值。

在这里插入图片描述

(三)解决方案
为了解决第三个问题,即建立机会信号的实时筛选方法,筛选出偏差较大的机会信号,并给出此时飞行器0秒至10秒的导航定位情况,本文提出了以下解决方案:

  1. 筛选偏差较大的机会信号
    根据附件1的接收情况1数据,可以发现有些机会信号的数据偏差较大,可能会对飞行器的定位造成影响。因此,首先需要筛选出偏差较大的机会信号。

假设有N种机会信号,每种机会信号分别对应m个发射源,即有N×m个机会信号。根据题目中所提到的五类机会信号的具体信息含义,可以分别计算出每个机会信号的偏差值,如下所示:

(1)达到时间信息TOA的偏差值为:
T O A 偏差值 = 接收信号时间 − 发射信号时间 TOA_{偏差值} = 接收信号时间 - 发射信号时间 TOA偏差值=接收信号时间发射信号时间

(2)到达时间差信息TDOA的偏差值为:
T D O A 偏差值 = 接收信号时间差 − 发射信号时间差 TDOA_{偏差值} = 接收信号时间差 - 发射信号时间差 TDOA偏差值=接收信号时间差发射信号时间差

(3)多普勒频率差信息DFD的偏差值为:
D F D 偏差值 = 接收信号频率差 − 发射信号频率差 DFD_{偏差值} = 接收信号频率差 - 发射信号频率差 DFD偏差值=接收信号频率差发射信号频率差

(4)到达角度信息AOA的偏差值为:
A O A 偏差值 = tan ⁡ − 1 ( 接收信号角度 发射信号角度 ) AOA_{偏差值} = \tan^{-1}\left(\frac{接收信号角度}{发射信号角度}\right) AOA偏差值=tan1(发射信号角度接收信号角度)

(5)接收强度指标信息RSSI的偏差值为:
R S S I 偏差值 = 接收信号强度 − 发射信号强度 RSSI_{偏差值} = 接收信号强度 - 发射信号强度 RSSI偏差值=接收信号强度发射信号强度

在计算出每个机会信号的偏差值之后,可以根据偏差值的大小,对机会信号进行筛选。一般情况下,偏差值越大的机会信号对定位的影响就越大,因此可以设定一个阈值,将偏差值超过阈值的机会信号筛选出来。

  1. 飞行器的实时位置估计
    根据题目中所提供的接收情况1数据,可以发现飞行器每隔0.01秒就会接收到不同种类的机会信号。因此,可以利用这些机会信号来实时估计飞行器的位置。

根据题目中所提到的五类机会信号的具体信息含义,可以分别计算出每个机会信号的到达时间差信息、多普勒频率差信息和到达角度信息。假设每种机会信号分别对应m个发射源,那么每种机会信号就可以得到m个到达时间差信息、m个多普勒频率差信息和m个到达角度信息。因此,可以分别计算出每个机会信号对应的到达时间差信息、多普勒频率差信息和到达角度信息的平均值,作为这种机会信号的到达时间差信息、多普勒频率差信息和到达角度信息的估计值。

根据题目中所提到的三种机会信号的计算方式,可以得到飞行器的X、Y、Z三个轴方向的位置估计值,如下所示:

(1)到达时间差信息的估计值为:
T D O A 估计值 = 平均 ( 到达时间差信息 ) TDOA_{估计值} = 平均(到达时间差信息) TDOA估计值=平均(到达时间差信息)

(2)多普勒频率差信息的估计值为:
D F D 估计值 = 平均 ( 多普勒频率差信息 ) DFD_{估计值} = 平均(多普勒频率差信息) DFD估计值=平均(多普勒频率差信息)

(3)到达角度信息的估计值为:
A O A 估计值 = tan ⁡ − 1 ( 平均 ( 到达角度信息 ) 1 ) AOA_{估计值} = \tan^{-1}\left(\frac{平均(到达角度信息)}{1}\right) AOA估计值=tan1(1平均(到达角度信息))

  1. 飞行器的导航定位结果
    根据上述方法,可以得到飞行器在每一时刻的位置估计值。因此,可以画出飞行器的导航定位结果,如下所示:

位置估计结果: ( X , Y , Z ) 位置估计结果:(X, Y, Z) 位置估计结果:(X,Y,Z)

X数学公式,如下所示:

(1)平均值的计算方式为:
平均值 = 总和 个数 平均值 = \frac{总和}{个数} 平均值=个数总和

(2)到达时间差信息的计算方式为:
到达时间差信息 = 接收时间 − 发射时间 到达时间差信息 = 接收时间 - 发射时间 到达时间差信息=接收时间发射时间

(3)多普勒频率差信息的计算方式为:
多普勒频率差信息 = 接收信号频率 − 发射信号频率 发射信号频率 多普勒频率差信息 = \frac{接收信号频率 - 发射信号频率}{发射信号频率} 多普勒频率差信息=发射信号频率接收信号频率发射信号频率

(4)到达角度信息的计算方式为:
到达角度信息 = tan ⁡ − 1 ( 发射信号角度 接收信号角度 ) 到达角度信息 = \tan^{-1}\left(\frac{发射信号角度}{接收信号角度}\right) 到达角度信息=tan1(接收信号角度发射信号角度)

(5)接收强度指标信息的计算方式为:
接收强度指标信息 = 接收信号强度 − 发射信号强度 接收强度指标信息 = 接收信号强度 - 发射信号强度 接收强度指标信息=接收信号强度发射信号强度

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

#读取附件1数据
df = pd.read_csv('附件1.csv', sep=',', header=0)

#筛选出偏差较大的机会信号
def filter_outliers(data, threshold):
留白

#设置偏差阈值为2
threshold = 2
#筛选出偏差较大的机会信号
filtered_data = filter_outliers(df, threshold)

#打印筛选出的偏差较大的机会信号
print(filtered_data)

#根据筛选出的偏差较大的机会信号,给出飞行器0秒至10秒的导航定位情况
#这里根据具体的机会信号特征,可以选择不同的定位方法进行定位,例如利用到达时间信息进行定位等。

在这里插入图片描述

该段文字的第四个问题是关于随机性偏差和常值飘移的评价判断方法以及对接收情况2下飞行器的定位结果的求解。

(四)随机性偏差和常值飘移的评价判断方法及定位结果建模

在机会信号的接收过程中,由于各种不确定因素的影响,会导致信号的偏差。这些偏差可以分为两种:随机性偏差和常值飘移。随机性偏差是指信号偏差的值具有随机性,即偏差的值在一定范围内是随机的;常值飘移则是指信号偏差的值具有一定的稳定性,即偏差的值在一定范围内具有固定的常数偏移。为了评价这两种偏差的程度,可以采用如下的评价指标:

(1)随机性偏差程度评价指标:平均偏差值的方差,记为 V V V,可以表示为:
V = 1 n ∑ i = 1 n ( x i − x ˉ ) 2 V=\frac{1}{n}\sum_{i=1}^{n}(x_i-\bar{x})^2 V=n1i=1n(xixˉ)2
其中, n n n为偏差值的总数, x i x_i xi为第 i i i个偏差值, x ˉ \bar{x} xˉ为偏差值的平均值。

(2)常值飘移量评价指标:最大偏差值与最小偏差值之差,记为 D D D,可以表示为:
D = max ⁡ ( x i ) − min ⁡ ( x i ) D=\max(x_i)-\min(x_i) D=max(xi)min(xi)
其中, max ⁡ ( x i ) \max(x_i) max(xi)为偏差值中的最大值, min ⁡ ( x i ) \min(x_i) min(xi)为偏差值中的最小值。

对于接收情况2下的机会信号,可以通过对比两种评价指标的值来评价随机性偏差程度和常值飘移量。当 V V V值较大时,说明信号的随机性偏差程度较大;当 D D D值较大时,说明信号的常值飘移量较大。因此,可以结合两个评价指标来综合评价信号的偏差情况。

针对接收情况2,可以通过建立数学模型来判断信号的随机性偏差程度和常值飘移量,从而评价信号的偏差情况。具体的建模过程如下:

(1)首先,对接收情况2中的每个机会信号,分别计算其接收到的偏差值 x i x_i xi,并求得偏差值的平均值 x ˉ \bar{x} xˉ

(2)根据偏差值的平均值 x ˉ \bar{x} xˉ,可以求得随机性偏差程度评价指标 V V V的值。

(3)同时,也可以求得偏差值中的最大值和最小值,从而求得常值飘移量评价指标 D D D的值。

(4)综合评价随机性偏差和常值飘移,可以通过比较 V V V D D D的值来判断信号的偏差情况。如果 V V V较大而 D D D较小,说明信号的偏差主要是随机性的,反之则说明信号的偏差主要是由于常值飘移造成的。

(5)根据评价结果,可以将偏差较大的信号筛选出来,通过建立合理的筛选方法,可以得到更准确的飞行器定位结果。

问题四. 机会信号的偏差可以分为两种,一种是随机性偏差(零均值),一种是常值飘移。请建立评价判断方法,并依据所提出方法,判断接收情况2 中的机会信号的随机性偏差程度以及常值飘移量。设计合理的机会信号筛选方法,给出接收情况2 下的飞行器0 秒至10 秒的定位结果。

解:
首先,针对随机性偏差和常值飘移,建立评价判断方法。假设机会信号的偏差为d,其中随机性偏差为d_r,常值飘移为d_d。则可以使用方差来评价随机性偏差的程度,即:

V a r ( d r ) = 1 N − 1 ∑ i = 1 N ( d r − d r ˉ ) 2 Var(d_r) = \frac{1}{N-1}\sum_{i=1}^{N}(d_r-\bar{d_r})^2 Var(dr)=N11i=1N(drdrˉ)2

其中,N为机会信号的数量, d r ˉ \bar{d_r} drˉ为随机性偏差的均值。随机性偏差的程度越大,方差值越大。

而对于常值飘移,可以使用绝对值的平均差来评价,即:

M A E ( d d ) = 1 N ∑ i = 1 N ∣ d d ∣ MAE(d_d) = \frac{1}{N}\sum_{i=1}^{N}|d_d| MAE(dd)=N1i=1Ndd

其中,N为机会信号的数量。常值飘移量越大,平均差值越大。

接下来,针对接收情况2中的机会信号,首先需要进行筛选,排除掉偏差较大的信号。可以根据问题三中建立的机会信号筛选方法来进行筛选。在排除掉偏差较大的信号后,再根据以上的评价方法,计算机会信号的随机性偏差程度和常值飘移量,将这些参数作为输入,使用机会信号的数学表达式来进行定位计算,得到飞行器0秒至10秒的定位结果。

综上所述,可以使用以下步骤来解决问题四:

1.根据随机性偏差和常值飘移的评价方法,计算接收情况2中机会信号的随机性偏差程度和常值飘移量。

2.根据问题三中建立的机会信号筛选方法,排除掉偏差较大的信号。

3.利用剩余的机会信号进行定位计算,得到飞行器0秒至10秒的定位结果。

  1. 问题四代码:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 读取接收情况2数据
data = np.loadtxt('data.csv', delimiter=",", skiprows=1)
time = data[:, 0]
x = data[:, 1]
y = data[:, 2]

# 计算x和y的一阶差分,即速度
vx = np.diff(x) / np.diff(time)
vy = np.diff(y) / np.diff(time)

# 计算速度的一阶差分,即加速度
ax = np.diff(vx) / np.diff(time[:-1])
ay = np.diff(vy) / np.diff(time[:-1])

# 创建线性回归模型
model = LinearRegression()

# 使用速度和加速度作为特征
features = np.column_stack((vx[:-1], vy[:-1], ax, ay))

# 对速度和加速度进行线性回归拟合
model.fit(features, np.diff(x[1:]) / np.diff(time[:-1]))

# 计算拟合后的速度和加速度
pred_vx = model.predict(features[:, :2])
pred_vy = model.predict(features[:, 2:])

# 计算速度和加速度的残差
resid_vx = vx[1:] - pred_vx
resid_vy = vy[1:] - pred_vy

# 计算速度和加速度的标准差
std_vx = np.std(resid_vx)
std_vy = np.std(resid_vy)

# 计算速度和加速度的平均值
mean_vx = np.mean(resid_vx)
mean_vy = np.mean(resid_vy)

# 计算速度和加速度的方差
var_vx = np.var(resid_vx)
var_vy = np.var(resid_vy)

# 计算速度和加速度的标准差比率
std_ratio = (std_vx / std_vy)

# 计算速度和加速度的偏差程度
bias = np.sqrt(var_vx + var_vy) / np.mean(np.sqrt(np.square(resid_vx) + np.square(resid_vy)))

# 判断偏差程度
if bias < 0.1:
    print("接收情况2下的机会信号的随机性偏差程度较小")
else:
    print("接收情况2下的机会信号的随机性偏差程度较大")

# 计算速度和加速度的常值飘移量
drift = np.sqrt(np.square(mean_vx) + np.square(mean_vy))

# 判断常值飘移量
if drift < 0.1:
    print("接收情况2下的机会信号的常值飘移量较小")
else:
    print("接收情况2下的机会信号的常值飘移量较大")

# 根据评价判断方法筛选机会信号
if std_ratio < 0.5 and bias < 0.1 and drift < 0.1:
    print("机会信号有效,进行定位计算")
else:
    print("机会信号无效,无法进行定位计算")

更多内容具体可以去我的宫忠浩主页!里面包含本次竞赛全部思路与分析!
和 《Tina表姐》 ,同名公众号 一起学习数学建模!
大家的关注是Tina一直更新的动力!Tina表姐助你夺奖!

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值