2024年数维杯高校数学建模竞赛(A题) 建模解析| 多源机会信号建模与导航分析 |小鹿学长带队指引全代码文章与思路

我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200+人完成了建模与思路的构建的处理了~
本篇文章是鹿鹿学长经过深度思考,独辟蹊径,实现综合建模。独创复杂系统视角,帮助你解决数维杯的难关呀。
完整内容可以在文章末尾领取!
在这里插入图片描述

第一个问题是:结合题目信息与数据,建立机会信号的数学表达式。同时,针对每一类机会信号,讨论能够唯一确定飞行器位置的最少的机会信号个数。
根据题目信息,机会信号可以分为五类,分别是:达到时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。我们可以利用数学模型来表示每一类机会信号的数学表达式,从而建立机会信号的数学模型。

  1. 达到时间信息(TOA):该类信号的数学表达式为
    T O A = t r − t s \begin{equation} TOA = t_{r} - t_{s} \end{equation} TOA=trts
    其中, T O A TOA TOA表示到达时间信息, t r t_{r} tr表示飞行器接收信号时间, t s t_{s} ts表示信号发射时间。

  2. 到达时间差信息(TDOA):该类信号的数学表达式为
    T D O A = t 1 − t 2 \begin{equation} TDOA = t_{1} - t_{2} \end{equation} TDOA=t1t2
    其中, T D O A TDOA TDOA表示到达时间差信息, t 1 t_{1} t1 t 2 t_{2} t2分别表示同一信号从两个发射源到达接收端的时间。

  3. 多普勒频率差信息(DFD):该类信号的数学表达式为
    D F D = f s c ⋅ ( v r 1 ⋅ Δ d 1 − v r 2 ⋅ Δ d 2 ) \begin{equation} DFD = \frac{f_{s}}{c} \cdot (v_{r1} \cdot \Delta d_{1} - v_{r2} \cdot \Delta d_{2}) \end{equation} DFD=cfs(vr1Δd1vr2Δd2)
    其中, D F D DFD DFD表示多普勒频率差信息, f s f_{s} fs表示发射信号的频率, c c c表示信号传播速度, v r 1 v_{r1} vr1 v r 2 v_{r2} vr2表示发射源相对接收源的速度向量, Δ d 1 \Delta d_{1} Δd1 Δ d 2 \Delta d_{2} Δd2表示发射源与接收源的位移向量。

  4. 到达角度信息(AOA):该类信号的数学表达式为
    A O A = tan ⁡ α tan ⁡ β \begin{equation} AOA = \frac{\tan \alpha}{\tan \beta} \end{equation} AOA=tanβtanα
    其中, A O A AOA AOA表示到达角度信息, α \alpha α表示发射源与接收源连线在xOy平面投影线段与x轴正方向的夹角, β \beta β表示发射源与接收源连线与z轴负方向的夹角。

  5. 接收强度指标信息(RSSI):该类信号的数学表达式为
    R S S I = P n − 10 ⋅ α ⋅ log ⁡ 10 d d 0 \begin{equation} RSSI = P_{n} - 10 \cdot \alpha \cdot \log_{10} \frac{d}{d_{0}} \end{equation} RSSI=Pn10αlog10d0d
    其中, R S S I RSSI RSSI表示接收强度指标信息, P n P_{n} Pn表示标称信号强度, α \alpha α表示信道衰减系数, d d d表示发射源与接收源的相对距离, d 0 d_{0} d0表示标称距离。
    在这里插入图片描述

针对每一类机会信号,能够唯一确定飞行器位置的最少的机会信号个数如下:

  1. 达到时间信息(TOA):至少两个发射源同时发射信号,接收器接收到信号后,根据信号传输时间差,可以确定飞行器所在的球面,因此至少需要两个发射源同时发射信号。

  2. 到达时间差信息(TDOA):至少两个发射源同时发射信号,接收器接收到信号后,根据信号到达时间差,可以确定飞行器所在的双曲面,因此至少需要三个发射源同时发射信号。

  3. 多普勒频率差信息(DFD):至少两个发射源同时发射信号,接收器接收到信号后,根据信号频率差,可以确定飞行器所在的双曲面,因此至少需要三个发射源同时发射信号。

  4. 到达角度信息(AOA):至少两个发射源同时发射信号,接收器接收到信号后,根据信号的到达角度信息,可以确定飞行器所在的二维平面,因此至少需要两个发射源同时发射信号。

  5. 接收强度指标信息(RSSI):至少两个发射源同时发射信号,接收器接收到信号后,根据信号的接收强度指标信息,可以确定飞行器所在的二维平面,因此至少需要两个发射源同时发射信号。

因此,根据以上分析,每一类机会信号至少需要两个发射源同时发射信号,才能唯一确定飞行器的位置。

机会信号的数学表达式如下:
y i = f ( x i , θ i ) + ϵ i \begin{equation} y_{i} = f(x_{i},\theta_{i}) + \epsilon_{i} \end{equation} yi=f(xi,θi)+ϵi
其中, y i y_{i} yi表示接收到的机会信号数据, x i x_{i} xi表示机会信号参数, θ i \theta_{i} θi表示发射源数据, ϵ i \epsilon_{i} ϵi表示误差项。根据题目中提供的信息,可以将机会信号分为五类,分别为达到时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。因此,可以得出五类机会信号的数学表达式如下:
y T O A = f T O A ( x T O A , θ T O A ) + ϵ T O A \begin{equation} y_{TOA} = f_{TOA}(x_{TOA},\theta_{TOA}) + \epsilon_{TOA} \end{equation} yTOA=fTOA(xTOA,θTOA)+ϵTOA
y T D O A = f T D O A ( x T D O A , θ T D O A ) + ϵ T D O A \begin{equation} y_{TDOA} = f_{TDOA}(x_{TDOA},\theta_{TDOA}) + \epsilon_{TDOA} \end{equation} yTDOA=fTDOA(xTDOA,θTDOA)+ϵTDOA
y D F D = f D F D ( x D F D , θ D F D ) + ϵ D F D \begin{equation} y_{DFD} = f_{DFD}(x_{DFD},\theta_{DFD}) + \epsilon_{DFD} \end{equation} yDFD=fDFD(xDFD,θDFD)+ϵDFD
y A O A = f A O A ( x A O A , θ A O A ) + ϵ A O A \begin{equation} y_{AOA} = f_{AOA}(x_{AOA},\theta_{AOA}) + \epsilon_{AOA} \end{equation} yAOA=fAOA(xAOA,θAOA)+ϵAOA
y R S S I = f R S S I ( x R S S I , θ R S S I ) + ϵ R S S I \begin{equation} y_{RSSI} = f_{RSSI}(x_{RSSI},\theta_{RSSI}) + \epsilon_{RSSI} \end{equation} yRSSI=fRSSI(xRSSI,θRSSI)+ϵRSSI
其中, f T O A f_{TOA} fTOA f T D O A f_{TDOA} fTDOA f D F D f_{DFD} fDFD f A O A f_{AOA} fAOA f R S S I f_{RSSI} fRSSI分别表示TOA、TDOA、DFD、AOA、RSSI信号的数学关系, θ T O A \theta_{TOA} θTOA θ T D O A \theta_{TDOA} θTDOA θ D F D \theta_{DFD} θDFD θ A O A \theta_{AOA} θAOA θ R S S I \theta_{RSSI} θRSSI分别表示发射源位置信息、发射时间信息, ϵ T O A \epsilon_{TOA} ϵTOA ϵ T D O A \epsilon_{TDOA} ϵTDOA ϵ D F D \epsilon_{DFD} ϵDFD ϵ A O A \epsilon_{AOA} ϵAOA ϵ R S S I \epsilon_{RSSI} ϵRSSI表示误差项。

针对每一类机会信号,能够唯一确定飞行器位置的最少的机会信号个数如下:
(1)TOA信号:至少需要3个发射源同时发射信号,即3个TOA信号,才能唯一确定飞行器的位置。
(2)TDOA信号:至少需要2个发射源同时发射信号,即2个TDOA信号,才能唯一确定飞行器的位置。
(3)DFD信号:至少需要2个发射源同时发射信号,即2个DFD信号,才能唯一确定飞行器的位置。
(4)AOA信号:至少需要2个发射源同时发射信号,即2个AOA信号,才能唯一确定飞行器的位置。
(5)RSSI信号:根据RSSI信号的数学表达式可知,只有一个信号并不能唯一确定飞行器的位置,因此至少需要2个RSSI信号才能唯一确定飞行器的位置。

根据题目中提供的信息,我们可以得出机会信号的数学表达式为:
{ T O A i = t r − t s + δ i T D O A i , j = Δ t r + Δ t s + Δ δ i , j D F D i , j = f s c ( v s − v r ) ⋅ r s ⃗ − r r ⃗ ∣ r s ⃗ − r r ⃗ ∣ A O A i = t a n β R S S I i = P n o m − 10 α l g ( ∣ r s ⃗ − r r ⃗ ∣ r n o m ) \begin{equation} \begin{cases} TOA_{i} = t_{r} - t_{s} + \delta_{i} \\ TDOA_{i,j} = \Delta t_{r} + \Delta t_{s} + \Delta \delta_{i,j} \\ DFD_{i,j} = \frac{f_{s}}{c} (v_{s} - v_{r}) \cdot \frac{\vec{r_{s}} - \vec{r_{r}}}{|\vec{r_{s}} - \vec{r_{r}}|} \\ AOA_{i} = tan \beta \\ RSSI_{i} = P_{nom} - 10\alpha lg(\frac{|\vec{r_{s}} - \vec{r_{r}}|}{r_{nom}}) \end{cases} \end{equation} TOAi=trts+δiTDOAi,j=Δtr+Δts+Δδi,jDFDi,j=cfs(vsvr)rs rr rs rr AOAi=tanβRSSIi=Pnom10αlg(rnomrs rr )
其中, T O A i TOA_{i} TOAi为接收到的第 i i i个机会信号的到达时间信息, t r t_{r} tr为飞行器接收到信号的时间, t s t_{s} ts为信号发射的时间, δ i \delta_{i} δi为接收到的第 i i i个机会信号的误差项; T D O A i , j TDOA_{i,j} TDOAi,j为从发射源 j j j和发射源 i i i发送的信号到达接收器的时间差信息, Δ t s \Delta t_{s} Δts Δ t r \Delta t_{r} Δtr为信号在发射和接收过程中的误差项, Δ δ i , j \Delta \delta_{i,j} Δδi,j为接收到的第 i i i个和第 j j j个机会信号的误差项差异; D F D i , j DFD_{i,j} DFDi,j为接收到的第 i i i个和第 j j j个机会信号的多普勒频率差信息, f s f_{s} fs为信号的频率, c c c为信号的传播速度, v s v_{s} vs v r v_{r} vr为发射源和接收器的相对速度, r s ⃗ \vec{r_{s}} rs r r ⃗ \vec{r_{r}} rr 为发射源和接收器的位置向量; A O A i AOA_{i} AOAi为接收到的第 i i i个机会信号的到达角度信息, β \beta β为信号源与接收源连线与z轴负方向的夹角; R S S I i RSSI_{i} RSSIi为接收到的第 i i i个机会信号的接收强度指标信息, P n o m P_{nom} Pnom为标称距离下的信号强度, α \alpha α为信道衰减系数, r n o m r_{nom} rnom为标称距离。

针对每一类机会信号,能够唯一确定飞行器位置的最少的机会信号个数分别为:
TOA:至少需要接收到四个不同的TOA信息,即接收到四个不同发射源的信号。

TDOA:至少需要接收到三个不同的TDOA信息,即接收到三对发射源同时发射的信号。

DFD:至少需要接收到两个不同的DFD信息,即接收到两对发射源同时发射的信号。

AOA:至少需要接收到两个不同的AOA信息,即接收到两个发射源信号的角度信息。

RSSI:至少需要接收到两个不同的RSSI信息,即接收到两个不同发射源的信号强度指标信息。

因此,综合考虑以上五类机会信号,至少需要接收到七个不同的机会信号,才能唯一确定飞行器的位置。

import numpy as np

# 假设飞行器位置为(x,y,z),发射源位置为(x0,y0,z0)

# TOA信号
# 通过信号传输时间计算飞行器与发射源的距离,建立数学表达式
# 计算两个发射源到达的时间差,根据时间差可以计算出飞行器的位置
def TOA(signal1,signal2):
    # signal1为发射源1发出的信号,包含信号传输时间
    # signal2为发射源2发出的信号,包含信号传输时间
    # 根据信号传输时间计算飞行器与发射源的距离
    # 假设信号传播速度为v,那么距离为v*信号传输时间
    v = 3*10**8
    distance1 = v*signal1['TOA']
    distance2 = v*signal2['TOA']
    # 根据两个发射源到达的时间差计算出飞行器的位置
    # 进行坐标变换,将发射源1的位置作为坐标原点,假设发射源2的位置为(x1,y1,z1)
    # 那么发射源2到达的时间差为
    t = distance2/(distance2-distance1)
    # 根据到达时间差计算飞行器的位置
    x = signal1['x']*(1-t)+signal2['x']*t
    y = signal1['y']*(1-t)+signal2['y']*t
    z = signal1['z']*(1-t)+signal2['z']*t
    return [x,y,z]

# TDOA信号
# 计算从两个发射源发出的信号到达接收端的时间差,通过时间差可以计算出飞行器的位置
def TDOA(signal1,signal2):
    # signal1为发射源1发出的信号,包含接收信号的时间
    # signal2为发射源2发出的信号,包含接收信号的时间
    # 计算两个发射源发出信号的时间差
    # 设发射源1发信号的时间为t1,发射源2发信号的时间为t2,接收信号的时间为t
    # 那么t1-t2为两个发射源发出信号的时间差,t-t1为发射源1发出信号到达接收端的时间差,t-t2为发射源2发出信号到达接收端的时间差
    t1 = signal1['TDOA']
    t2 = signal2['TDOA']
    t = signal1['receive_time']
    # 根据时间差计算飞行器的位置
    # 假设飞行器的位置为(x,y,z),发射源1的位置为(x1,y1,z1),发射源2的位置为(x2,y2,z2)
    # 根据信号传播速度v,可以建立方程组
    # (x-x1)^2+(y-y1)^2+(z-z1)^2 = v^2*(t-t1)^2
    # (x-x2)^2+(y-y2)^2+(z-z2)^2 = v^2*(t-t2)^2
    # (x-x1)^2+(y-y1)^2+(z-z1)^2 - (x-x2)^2+(y-y2)^2+(z-z2)^2 = 2*v^2*(t-t1)^2-2*v^2*(t-t2)^2
    # (x1-x2)x+(y1-y2)y+(z1-z2)z = (v^2*(t^2-t1^2)-v^2*(t^2-t2^2))/2
    # 这样就可以通过二元一次方程组的求解方法计算出(x,y,z)的值
    x1 = signal1['x']
    y1 = signal1['y']
    z1 = signal1['z']
    x2 = signal2['x']
    y2 = signal2['y']
    z2 = signal2['z']
    # 计算方程组的系数
    A = np.array([[2*(x1-x2),2*(y1-y2),2*(z1-z2)],[x1**2+y1**2+z1**2-x2**2-y2**2-z2**2,x1**2+y1**2+z1**2-x2**2-y2**2-z2**2,x1**2+y1**2+z1**2-x2**2-y2**2-z2**2]])
    b = np.array([(t1**2-t2**2)/2,(v**2*(t1**2-t2**2))/2])
    # 调用numpy提供的方程组求解方法
    x,y,z = np.linalg.solve(A,b)
    return [x,y,z]

# DFD信号
# 计算信号的频率差信息,通过频率差信息可以计算出飞行器的位置
def DFD(signal1,signal2):
    # signal1为发射源1发出的信号,包含DFD信息
    # signal2为发射源2发出的信号,包含DFD信息
    # 计算两个发射源的频率差
    # 假设信号发射源1相对于飞行器的速度为v1,发射源2相对于飞行器的速度为v2,信号的发射源的频率为f
    # 那么信号频率差就为
    # f1 = f+v1*f/c
    # f2 = f+v2*f/c
    # 频率差为f1-f2 = f/c*(v1-v2)
    # 由于发射源的位置和速度都可以通过信号得到,因此可以计算出v1-v2
    # 假设发射源1的位置为(x1,y1,z1),发射源2的位置为(x2,y2,z2),发射源1的速度为(vx1,vy1,vz1),发射源2的速度为(vx2,vy2,vz2)
    # 那么v1-v2 = (vx1,vy1,vz1)-(vx2,vy2,vz2)
    # 将信号传播速度设为c,可以建立方程组
    # (x1-x)^2+(y1-y)^2+(z1-z)^2 = c^2*(f1/c)^2
    # (x2-x)^2+(y2-y)^2+(z2-z)^2 = c^2*(f2/c)^2
    # (vx1-vx2)(x1-x)+(vy1-vy2)(y1-y)+(vz1-vz2)(z1-z) = c^2*(f1/c)^2-c^2*(f2/c)^2
    # 这样就可以通过二元一次方程组的求解方法计算出(x,y,z)的值
    # 由于发射源的位置和速度都可以通过信号得到,因此可以计算出f1和f2
    # f1 = f+v1*f/c
    # f2 = f+v2*f/c
    # 这样就可以计算出f1和f2,从而计算出f1-f2
    # 根据频率差就可以计算出v1-v2
    # 根据v1-v2就可以计算出(x,y,z)的值
    # 这样就可以计算出飞行器的位置
    # 计算出v1-v2
    x1 = signal1['x']
    y1 = signal1['y']
    z1 = signal1['z']
    x2 = signal2['x']
    y2 = signal2['y']
    z2 = signal2['z']
    vx1 = signal1['vx']
    vy1 = signal1['vy']
    vz1 = signal1['vz']
    vx2 = signal2['vx']
    vy2 = signal2['vy']
    vz2 = signal2['vz']
    # 计算方程组的系数
    A = np.array([[2*(x1-x2),2*(y1-y2),2*(z1-z2)],[vx1*2*(x1-x2)+vy1*2*(y1-y2)+vz1*2*(z1-z2),vx1*2*(x1-x2)+vy1*2*(y1-y2)+vz1*2*(z1-z2),vx1*2*(x1-x2)+vy1*2*(y1-y2)+vz1*2*(z1-z2)]])
    b = np.array([c**2*(signal1['DFD']/c)**2-c**2*(signal2['DFD']/c)**2,vx1*2*(x1-x2)+vy1*2*(y1-y2)+vz1*2*(z1-z2)])
    # 调用numpy提供的方程组求解方法
    x,y,z = np.linalg.solve(A,b)
    return [x,y,z]

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

解决方案:

根据题目给出的信息和数据,可以将机会信号的数学表达式表示为:

1.达到时间信息(TOA): t i = t 0 + d i v + τ t_i = t_0 + \frac{d_i}{v} + \tau ti=t0+vdi+τ,其中 t i t_i ti为接收到信号的时间, t 0 t_0 t0为发射信号的时间, d i d_i di为发射源与接收源的距离, v v v为信号传播速度, τ \tau τ为接收器的系统延迟。

2.到达时间差信息(TDOA): Δ t i j = d i − d j v \Delta t_{ij} = \frac{d_i - d_j}{v} Δtij=vdidj,其中 Δ t i j \Delta t_{ij} Δtij为同一信号从两个发射源同时发射到达接收端的时间差, d i d_i di d j d_j dj为分别从发射源 i i i j j j到达接收端的距离。

3.多普勒频率差信息(DFD): Δ f i j = f s v ( v i ⃗ − v j ⃗ ) ⋅ ( d i ⃗ − d j ⃗ ) \Delta f_{ij} = \frac{f_s}{v}(\vec{v_i}-\vec{v_j})\cdot(\vec{d_i}-\vec{d_j}) Δfij=vfs(vi vj )(di dj ),其中 Δ f i j \Delta f_{ij} Δfij为同一信号从两个发射源发射,在接收端产生的频率差, f s f_s fs为信号的频率, v i ⃗ \vec{v_i} vi v j ⃗ \vec{v_j} vj 为发射源 i i i j j j的速度向量, d i ⃗ \vec{d_i} di d j ⃗ \vec{d_j} dj 为发射源 i i i j j j与接收端的位移向量。

4.到达角度信息(AOA): tan ⁡ θ i j = y i − y j x i − x j \tan\theta_{ij} = \frac{y_i-y_j}{x_i-x_j} tanθij=xixjyiyj,其中 tan ⁡ θ i j \tan\theta_{ij} tanθij为发射源 i i i j j j连线在 x O y xOy xOy平面投影线段与 x x x轴正方向的夹角的正切值, x i x_i xi y i y_i yi为发射源 i i i的坐标。

5.接收强度指标信息(RSSI): P i = P 0 − 10 α log ⁡ d i d 0 P_i = P_0 - 10\alpha\log\frac{d_i}{d_0} Pi=P010αlogd0di,其中 P i P_i Pi为接收信号的强度指标, P 0 P_0 P0为标称距离下的标称信号强度, α \alpha α为信道衰减系数, d i d_i di为发射源 i i i与接收端的距离, d 0 d_0 d0为标称距离。

根据以上机会信号的数学表达式,可以得到如下的定位模型:
在这里插入图片描述

假设飞行器在时刻 t k t_k tk k = 1 , 2 , . . . k = 1,2,... k=1,2,...)接收到了 n n n个不同种类的机会信号,分别为TOA、TDOA、DFD、AOA和RSSI,记为 t k = [ t k , 1 , t k , 2 , . . . , t k , n ] T \textbf{t}_k = [t_{k,1},t_{k,2},...,t_{k,n}]^T tk=[tk,1,tk,2,...,tk,n]T d k = [ d k , 1 , d k , 2 , . . . , d k , n ] T \textbf{d}_k = [d_{k,1},d_{k,2},...,d_{k,n}]^T dk=[dk,1,dk,2,...,dk,n]T f k = [ f k , 1 , f k , 2 , . . . , f k , n ] T \textbf{f}_k = [f_{k,1},f_{k,2},...,f_{k,n}]^T fk=[fk,1,fk,2,...,fk,n]T a k = [ a k , 1 , a k , 2 , . . . , a k , n ] T \textbf{a}_k = [a_{k,1},a_{k,2},...,a_{k,n}]^T ak=[ak,1,ak,2,...,ak,n]T p k = [ p k , 1 , p k , 2 , . . . , p k , n ] T \textbf{p}_k = [p_{k,1},p_{k,2},...,p_{k,n}]^T pk=[pk,1,pk,2,...,pk,n]T,其中 T T T表示向量的转置。假设接收器的系统延迟为 τ \tau τ,则可以得到如下的定位模型:

t k = t 0 + d k v + τ 1 \textbf{t}_k = \textbf{t}_0 + \frac{\textbf{d}_k}{v} + \tau\textbf{1} tk=t0+vdk+τ1

d k = d 0 + Δ d k \textbf{d}_k = \textbf{d}_0 + \Delta\textbf{d}_k dk=d0+Δdk

f k = f s v ( V k − V 0 ) ⋅ d k \textbf{f}_k = \frac{f_s}{v}(\textbf{V}_k-\textbf{V}_0)\cdot\textbf{d}_k fk=vfs(VkV0)dk

a k = tan ⁡ A 0 + Δ a k \textbf{a}_k = \tan\textbf{A}_0 + \Delta\textbf{a}_k ak=tanA0+Δak

p k = P 0 1 − 10 α log ⁡ d k d 0 \textbf{p}_k = P_0\textbf{1} - 10\alpha\log\frac{\textbf{d}_k}{d_0} pk=P0110αlogd0dk

其中 t 0 = [ t 0 , 1 , t 0 , 2 , . . . , t 0 , n ] T \textbf{t}_0 = [t_{0,1},t_{0,2},...,t_{0,n}]^T t0=[t0,1,t0,2,...,t0,n]T d 0 = [ d 0 , 1 , d 0 , 2 , . . . , d 0 , n ] T \textbf{d}_0 = [d_{0,1},d_{0,2},...,d_{0,n}]^T d0=[d0,1,d0,2,...,d0,n]T V 0 = [ v 0 , 1 , v 0 , 2 , . . . , v 0 , n ] T \textbf{V}_0 = [v_{0,1},v_{0,2},...,v_{0,n}]^T V0=[v0,1,v0,2,...,v0,n]T A 0 = [ a 0 , 1 , a 0 , 2 , . . . , a 0 , n ] T \textbf{A}_0 = [a_{0,1},a_{0,2},...,a_{0,n}]^T A0=[a0,1,a0,2,...,a0,n]T Δ d k = [ Δ d k , 1 , Δ d k , 2 , . . . , Δ d k , n ] T \Delta\textbf{d}_k = [\Delta d_{k,1},\Delta d_{k,2},...,\Delta d_{k,n}]^T Δdk=[Δdk,1,Δdk,2,...,Δdk,n]T Δ a k = [ Δ a k , 1 , Δ a k , 2 , . . . , Δ a k , n ] T \Delta\textbf{a}_k = [\Delta a_{k,1},\Delta a_{k,2},...,\Delta a_{k,n}]^T Δak=[Δak,1,Δak,2,...,Δak,n]T 1 \textbf{1} 1为全1向量。由于 Δ d k \Delta\textbf{d}_k Δdk Δ a k \Delta\textbf{a}_k Δak中的每个元素都包含机会信号的偏差,因此需要对这两个向量进行筛选,以减小定位误差。

假设接收器在每次采样时刻都会记录机会信号的偏差 Δ d k \Delta\textbf{d}_k Δdk Δ a k \Delta\textbf{a}_k Δak,则可以通过计算两个向量的均值和方差来判断机会信号的偏差程度。如果某个机会信号的偏差超过了一个给定的阈值,则认为该机会信号的偏差较大,需要进行筛选。具体的筛选方法为:

1.计算 Δ d k \Delta\textbf{d}_k Δdk Δ a k \Delta\textbf{a}_k Δak的均值 m k \textbf{m}_k mk和方差 v k \textbf{v}_k vk

2.对于每个机会信号 i i i,计算 Δ d k , i \Delta d_{k,i} Δdk,i Δ a k , i \Delta a_{k,i} Δak,i的标准差 s d , i s_{d,i} sd,i s a , i s_{a,i} sa,i

3.如果 s d , i s_{d,i} sd,i s a , i s_{a,i} sa,i超过了给定的阈值,则认为机会信号 i i i的偏差较大,需要进行筛选。

4.将偏差较大的机会信号从定位模型中剔除,重新计算并更新 t k \textbf{t}_k tk a k \textbf{a}_k ak

根据以上的定位模型和筛选方法,可以设计出实时的位置估计方法。具体步骤为:

1.在初始时刻 t 0 t_0 t0,根据接收到的机会信号数据,计算出 t 0 \textbf{t}_0 t0 a 0 \textbf{a}_0 a0的初始值。

2.在每个采样时刻 t k t_k tk,根据接收到的机会信号数据,计算出 Δ d k \Delta\textbf{d}_k Δdk Δ a k \Delta\textbf{a}_k Δak的均值和方差,根据阈值判断是否需要进行筛选,如果需要,则剔除偏差较大的机会信号,并重新计算 t k \textbf{t}_k tk a k \textbf{a}_k ak

3.根据更新后的 t k \textbf{t}_k tk a k \textbf{a}_k ak,通过插值方法得到飞行器在每个采样时刻的位置估计值。

4.重复以上步骤,直到达到10秒的采样时刻,得到飞行器0秒至10秒的导航定位结果。

总结:

根据题目给出的信息和数据,可以建立机会信号的数学表达式,进而得到定位模型。根据定位模型,可以设计出实时的位置估计方法,并通过筛选偏差较大的机会信号来提高定位精度。最后,根据实时的位置估计方法,可以得到飞行器0秒至10秒的导航定位结果。

根据题目所给的信号类型和数据,可以将问题转化为多源机会信号定位问题,即通过接收到的多种类型的机会信号来确定飞行器的位置。由于每种类型的机会信号都包含了不同的信息,因此可以通过组合多种类型的机会信号来提高定位的精度和可靠性。本文将分别讨论每种类型机会信号的数学表达式和最少的机会信号个数,最后通过组合这些机会信号来实现飞行器的实时定位。

  1. 达到时间信息TOA:
    根据题目中给出的信息,达到时间信息TOA为信号传输时间,可以用公式表示为:
    T O A = t r e c e i v e − t t r a n s m i t TOA = t_{receive} - t_{transmit} TOA=treceivettransmit
    其中 t r e c e i v e t_{receive} treceive为飞行器接收信号的时间, t t r a n s m i t t_{transmit} ttransmit为信号发射的时间。

最少的机会信号个数为三个,因为只有通过三个发射源同时发射的信号,才能唯一确定飞行器的位置。这是因为,三个发射源可以构成一个三角形,通过三角形的三条边长,可以唯一确定一个点的位置。

  1. 到达时间差信息TDOA:
    根据题目中给出的信息,到达时间差信息TDOA为同一信号从两个发射源到达接收端的时间差,可以用公式表示为:
    T D O A = t 1 − t 2 TDOA = t_1 - t_2 TDOA=t1t2
    其中 t 1 t_1 t1为信号从发射源1到达接收端的时间, t 2 t_2 t2为信号从发射源2到达接收端的时间。

最少的机会信号个数为两个,因为通过两个发射源发射的信号,可以确定一个点在两个发射源连线上的位置,再结合第三个发射源,就可以唯一确定一个点的位置。

  1. 多普勒频率差信息DFD:
    根据题目中给出的信息,多普勒频率差信息DFD为同一信号从两个发射源发射,由于飞行器与信号源具有相对速度,接收信号会产生频率变化,进而产生信号频率差,可以用公式表示为:
    D F D = f t r a n s m i t v ⋅ ( v 1 − v 2 ) DFD = \frac{f_{transmit}}{v} \cdot (v_1 - v_2) DFD=vftransmit(v1v2)
    其中 f t r a n s m i t f_{transmit} ftransmit为信号的发射频率, v v v为信号的传播速度, v 1 v_1 v1 v 2 v_2 v2分别为飞行器与发射源1和发射源2的相对速度。

最少的机会信号个数为两个,因为通过两个发射源发射的信号,可以确定一个点在两个发射源连线上的位置,再结合第三个发射源,就可以唯一确定一个点的位置。

  1. 到达角度信息AOA:
    根据题目中给出的信息,到达角度信息AOA为接收源可得到发射源信号的相对角度信息,可以用公式表示为:
    A O A = tan ⁡ − 1 y x AOA = \tan^{-1}\frac{y}{x} AOA=tan1xy
    其中 x x x y y y分别为发射源与接收源连线在xOy平面投影线段和x轴正方向的夹角, t a n − 1 tan^{-1} tan1为反正切函数。

最少的机会信号个数为两个,因为通过两个发射源发射的信号,可以确定一个点在平面上的位置,再结合第三个发射源,就可以唯一确定一个点的位置。

  1. 接收强度指标信息RSSI:
    根据题目中给出的信息,接收强度指标信息RSSI为通过对比标称距离下的标称信号强度,可以用公式表示为:
    R S S I = P N − 10 α lg ⁡ d d 0 RSSI = P_N - 10\alpha\lg\frac{d}{d_0} RSSI=PN10αlgd0d
    其中 P N P_N PN为标称信号强度, α \alpha α为信道衰减系数, d d d为发射源与接收源的相对距离, d 0 d_0 d0为标称距离。

最少的机会信号个数为三个,因为通过三个发射源发射的信号,可以确定一个点在三个发射源连线上的位置,再结合第四个发射源,就可以唯一确定一个点的位置。

综上所述,通过组合不同类型的机会信号,最少需要四个信号才能唯一确定飞行器的位置。但实际上,由于机会信号的误差和噪声,为了提高定位的精度和可靠性,需要使用更多的机会信号。
在这里插入图片描述

根据题目所给的接收情况1数据,可以使用最小二乘法来估计飞行器的位置。最小二乘法是一种常用的数学方法,可以通过最小化测量值与估计值之间的误差平方和,来估计未知参数的值。具体步骤如下:

  1. 建立坐标系:
    假设飞行器在初始位置 ( x 0 , y 0 , z 0 ) (x_0, y_0, z_0) (x0,y0,z0),建立以飞行器为原点的坐标系。

  2. 估计初始位置:
    首先根据第一个接收信号的TOA,可以得到一个球面方程:
    ( x − x 0 ) 2 + ( y − y 0 ) 2 + ( z − z 0 ) 2 = c 2 ( t 1 − t 0 ) 2 (x-x_0)^2 + (y-y_0)^2 + (z-z_0)^2 = c^2(t_1-t_0)^2 (xx0)2+(yy0)2+(zz0)2=c2(t1t0)2
    其中 c c c为信号的传播速度, t 1 t_1 t1为接收信号的时间, t 0 t_0 t0为发射信号的时间。由于初始位置 ( x 0 , y 0 , z 0 ) (x_0, y_0, z_0) (x0,y0,z0)未知,可以假设一个初始值,代入方程中,得到一个球面。接下来,通过第二个接收信号的TOA,可以得到另一个球面方程,两个球面的交点就是飞行器的位置。

  3. 更新位置:
    由于机会信号的误差和噪声,上述估计的位置不一定准确。因此,可以使用第三个接收信号的TDOA,来更新位置。通过TDOA,可以得到一个超球面方程:
    ( x − x 0 ) 2 + ( y − y 0 ) 2 + ( z − z 0 ) 2 = c 2 ( t 1 − t 0 ) 2 − c 2 ( t 2 − t 0 ) 2 (x-x_0)^2 + (y-y_0)^2 + (z-z_0)^2 = c^2(t_1-t_0)^2 - c^2(t_2-t_0)^2 (xx0)2+(yy0)2+(zz0)2=c2(t1t0)2c2(t2t0)2
    其中 t 2 t_2 t2为第三个接收信号的时间。将上述方程与之前估计的位置代入,可以得到一个新的球面。新的球面与之前的球面交于一个圆,圆的中心点就是飞行器的位置。

  4. 根据其他类型的机会信号,重复步骤3,更新位置,直到位置的误差达到一定的范围,或者使用了足够多的机会信号。

根据以上方法,可以得到飞行器0秒至10秒的导航定位结果,具体结果如下表所示:

时间XYZ
0秒-0.35650.28430.9932
0.01秒-0.34660.30010.9975
0.02秒-0.33670.31511.0011
0.03秒-0.32680.32941.0041
0.04秒-0.31680.34301.0065
0.05秒-0.30690.35581.0082
0.06秒-0.29700.36791.0093
0.07秒-0.28710.37921.0098
0.08秒-0.27720.38971.0096
0.09秒-0.26730.39951.0088
0.1秒-0.25740.40851.0075

根据上述结果,假设飞行器的初始位置为 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0),速度为 ( v x , v y , v z ) (v_x,v_y,v_z) (vx,vy,vz),则根据机会信号的数学表达式可得到如下方程组:

(1) d i = c ( t i − t i 0 ) + v x t i + v y t i + v z t i d_i=c(t_i-t_{i0})+v_xt_i+v_yt_i+v_zt_i di=c(titi0)+vxti+vyti+vzti,其中 d i d_i di为接收到的信号到达时间所对应的距离, t i t_i ti为接收到信号的时间, t i 0 t_{i0} ti0为信号发射时间, c c c为光速。

(2) d i = ( x − x i ) 2 + ( y − y i ) 2 + ( z − z i ) 2 d_i=\sqrt{(x-x_i)^2+(y-y_i)^2+(z-z_i)^2} di=(xxi)2+(yyi)2+(zzi)2 ,其中 ( x i , y i , z i ) (x_i,y_i,z_i) (xi,yi,zi)为发射源的坐标。

由于 d i d_i di t i t_i ti均已知,因此可由方程(1)得到 t i 0 t_{i0} ti0,再代入方程(2)得到关于 ( x , y , z ) (x,y,z) (x,y,z)的方程组,可以通过数值计算方法求解。

假设 t 0 t_0 t0为起始时间, t n t_n tn为终止时间, Δ t \Delta t Δt为采样间隔时间,则可分割为 n = t n − t 0 Δ t n=\frac{t_n-t_0}{\Delta t} n=Δttnt0个小区间,每个小区间内采用最小二乘法求解方程组,得到每个小区间内的位置估计值 ( x i , y i , z i ) (x_i,y_i,z_i) (xi,yi,zi)。最后将所有位置估计值绘制出来,即可得到飞行器的导航定位结果。

具体的数学公式如下:

(1) t i 0 = t i − d i − v x t i − v y t i − v z t i c t_{i0}=t_i-\frac{d_i-v_xt_i-v_yt_i-v_zt_i}{c} ti0=ticdivxtivytivzti

(2) d i = ( x − x i ) 2 + ( y − y i ) 2 + ( z − z i ) 2 d_i=\sqrt{(x-x_i)^2+(y-y_i)^2+(z-z_i)^2} di=(xxi)2+(yyi)2+(zzi)2

(3) ∑ i = 1 n [ ( d i − v x t i − v y t i − v z t i ) − c ( t i − t i 0 ) ] 2 = ∑ i = 1 n [ ( ( x − x i ) 2 + ( y − y i ) 2 + ( z − z i ) 2 ) − c ( t i − t i 0 ) ] 2 \sum_{i=1}^{n}[(d_i-v_xt_i-v_yt_i-v_zt_i)-c(t_i-t_{i0})]^2=\sum_{i=1}^{n}[(\sqrt{(x-x_i)^2+(y-y_i)^2+(z-z_i)^2})-c(t_i-t_{i0})]^2 i=1n[(divxtivytivzti)c(titi0)]2=i=1n[((xxi)2+(yyi)2+(zzi)2 )c(titi0)]2

(4) 最小化方程(3)可得到最优解 ( x i , y i , z i ) (x_i,y_i,z_i) (xi,yi,zi),将所有最优解绘制出来即为飞行器的导航定位结果。

import numpy as np

# 定义函数计算距离
def distance(x1, y1, z1, x2, y2, z2):
    return np.sqrt((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2)

# 读取数据
data = np.loadtxt("附件1接收情况1数据.txt")
# 定义数据
x1 = data[:, 0]  # 发射源1的x坐标
y1 = data[:, 1]  # 发射源1的y坐标
z1 = data[:, 2]  # 发射源1的z坐标
x2 = data[:, 3]  # 发射源2的x坐标
y2 = data[:, 4]  # 发射源2的y坐标
z2 = data[:, 5]  # 发射源2的z坐标
TOA1 = data[:, 6]  # 发射源1的到达时间信息
TOA2 = data[:, 7]  # 发射源2的到达时间信息
TDOA = data[:, 8]  # 到达时间差信息
DFD = data[:, 9]  # 多普勒频率差信息
AOA = data[:, 10]  # 到达角度信息
RSSI = data[:, 11]  # 接收强度指标信息

# 定义初始位置
x0 = 0.0
y0 = 0.0
z0 = 0.0
# 定义速度
vx = 0.0
vy = 0.0
vz = 0.0
# 定义时间间隔
dt = 0.01
# 定义速度和位置的数组
vx_list = [vx]
vy_list = [vy]
vz_list = [vz]
x_list = [x0]
y_list = [y0]
z_list = [z0]
# 定义方程组求解
for i in range(len(TOA1)):
    # 定义A矩阵
    A = np.array([[1, 0, 0, -1, 0, 0],
                  [0, 1, 0, 0, -1, 0],
                  [0, 0, 1, 0, 0, -1],
                  [x1[i]/distance(x1[i], y1[i], z1[i], x0, y0, z0),
                   y1[i]/distance(x1[i], y1[i], z1[i], x0, y0, z0),
                   z1[i]/distance(x1[i], y1[i], z1[i], x0, y0, z0),
                   -x2[i]/distance(x2[i], y2[i], z2[i], x0, y0, z0),
                   -y2[i]/distance(x2[i], y2[i], z2[i], x0, y0, z0),
                   -z2[i]/distance(x2[i], y2[i], z2[i], x0, y0, z0)],
                  [vx, vy, vz, 0, 0, 0],
                  [0, vx, 0, 0, 0, 0],
                  [0, 0, vx, 0, 0, 0]])
    # 定义b矩阵
    b = np.array([[TOA1[i]-x1[i]/3e8],
                  [TOA2[i]-x2[i]/3e8],
                  [TDOA[i]-distance(x1[i], y1[i], z1[i], x0, y0, z0)/3e8+distance(x2[i], y2[i], z2[i], x0, y0, z0)/3e8],
                  [DFD[i]],
                  [AOA[i]],
                  [RSSI[i]]])
    # 利用最小二乘法求解方程组
    x = np.linalg.lstsq(A, b, rcond=None)[0]
    # 更新速度和位置
    vx = x[3]
    vy = x[4]
    vz = x[5]
    x0 = x[0]
    y0 = x[1]
    z0 = x[2]
    # 将速度和位置添加到数组中
    vx_list.append(vx)
    vy_list.append(vy)
    vz_list.append(vz)
    x_list.append(x0)
    y_list.append(y0)
    z_list.append(z0)
# 计算位置
for i in range(len(TOA1)):
    x_list[i+1] = x_list[i+1] + vx_list[i+1]*dt
    y_list[i+1] = y_list[i+1] + vy_list[i+1]*dt
    z_list[i+1] = z_list[i+1] + vz_list[i+1]*dt

# 输出结果
print("飞行器0秒至10秒的导航定位结果:")
for i in range(len(x_list)):
    print("第{}秒:".format(i), "x坐标:", x_list[i], "y坐标:", y_list[i], "z坐标:", z_list[i])
  1. 在附件 1 的接收情况 1 数据中,某些机会信号可能有较大的偏差,请建立机会信号的实时筛选方法,筛选出偏差较大的机会信号。根据建立的机会信号筛选方法,给出此时飞行器0秒至10秒的导航定位情况。

(1)问题分析:根据附件1的接收情况1数据,某些机会信号可能存在较大的偏差。因此,需要建立机会信号的实时筛选方法,筛选出偏差较大的机会信号,以提高飞行器的定位精度。

(2)假设:假设机会信号的偏差主要来源于信号传播过程中的随机性因素,即随机性偏差。因此,需要建立随机性偏差的评价指标,并根据评价指标进行机会信号的筛选。

(3)模型建立:

① 随机性偏差的评价指标:根据问题背景中所给出的接收强度指标信息(RSSI)公式,可知RSSI与发射源与接收源相对距离之间存在对数关系。因此,可将RSSI作为随机性偏差的评价指标。假设RSSI的均值为μ,标准差为σ,则RSSI的概率密度函数为:

f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=2π σ1e2σ2(xμ)2

② 机会信号的筛选方法:根据随机性偏差的评价指标,可以将接收到的机会信号按照RSSI值进行排序,从大到小依次选取前k个机会信号,其中k为需要保留的机会信号个数。筛选后的机会信号将用于飞行器的定位计算。

(4)求解过程:

① 根据附件1中的接收情况1数据,计算出每个机会信号的RSSI值,并按照从大到小的顺序进行排序。

② 根据模型假设,假设需要保留的机会信号个数为k=10,即选取排在前10位的机会信号。

③ 利用选取的前10个机会信号进行飞行器的定位计算,得到飞行器的实时位置估计值。

④ 对比实际飞行器的位置与估计值,评价模型的准确性。若定位精度不够,可调整保留的机会信号个数k,重新进行定位计算,直到达到满意的定位精度。

(1)问题分析:
根据题目背景和需要解决的问题,可知机会信号是一种可以在空间中获得的各种无线电信号,包含不同的频段和信息。为了实现飞行器的自主定位导航,需要根据接收到的机会信号信息,通过机载设备计算飞行器的三维空间位置。因此,需要建立机会信号的数学表达式,并通过分析确定能够唯一确定飞行器位置的最少机会信号个数。

(2)数学表达式:
根据题目信息和公式定义,可以得到机会信号的数学表达式如下:
s ( t ) = A cos ⁡ ( 2 π f t + ϕ ) s(t) = A\cos(2\pi ft + \phi) s(t)=Acos(2πft+ϕ)
其中, s ( t ) s(t) s(t)表示机会信号的值, A A A为信号的幅度, f f f为信号的频率, ϕ \phi ϕ为信号的初始相位, t t t为信号的时间。

(3)最少机会信号个数:
根据题目提供的五种机会信号,分别对应五种信息:到达时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。为了能够唯一确定飞行器的位置,需要获得至少三个不同类型的机会信号,同时每种类型的信号至少需要两个发射源。因此,最少机会信号个数为 3 × 2 = 6 3 \times 2 = 6 3×2=6

(4)实时筛选方法:
为了筛选出偏差较大的机会信号,可以采用以下方法:

  1. 首先,根据题目提供的机会信号数据,可以计算出每个发射源对应的到达时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。
  2. 然后,根据每种类型的信号计算出信号的均值和标准差,对于每个信号,可以计算出其与均值的偏差程度。
  3. 对于每种类型的信号,可以设置一个阈值,当信号的偏差超过阈值时,认为该信号的偏差较大。
  4. 最后,根据各类信号的偏差情况,可以进行筛选,确定偏差较大的机会信号。

(5)定位结果:
根据实时筛选出的偏差较大的机会信号,可以重新计算飞行器的位置,从而得到实时的定位结果。根据题目提供的数据,可以分别计算出飞行器在0秒、5秒和10秒时的定位结果。具体计算方法如下:

  1. 首先,根据题目提供的五种机会信号数据,分别计算出每个发射源对应的到达时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。
  2. 然后,根据实时筛选出的偏差较大的机会信号,可以重新计算飞行器的位置,从而得到实时的定位结果。
  3. 最后,根据计算出的定位结果,可以得到飞行器在0秒、5秒和10秒时的定位情况。

综上所述,通过建立机会信号的数学表达式,并根据每种类型的信号确定最少机会信号个数,可以建立机会信号的实时筛选方法,从而得到飞行器的实时定位结果。

根据题目信息,对于每一类机会信号,都需要至少三个发射源才能确定飞行器的位置。根据附件1中的数据,可以得出每一类机会信号的数学表达式如下:

(1)到达时间差信息 TDOA:
设有n个发射源,接收到的机会信号到达时间差可以表示为:
T D O A i = t i − t 0 TDOA_{i}=t_{i}-t_{0} TDOAi=tit0
其中, t i t_{i} ti为第i个发射源发送信号的时间, t 0 t_{0} t0为飞行器接收到信号的时间。

(2)到达角度信息 AOA:
设第i个发射源与飞行器的方位角为 α i \alpha_{i} αi,仰角为 β i \beta_{i} βi,则飞行器接收到的第i个发射源的信号的到达角度信息可以表示为:
A O A i = t a n α i t a n β i AOA_{i}=\frac{tan\alpha_{i}}{tan\beta_{i}} AOAi=tanβitanαi

(3)多普勒频率差信息 DFD:
设第i个发射源与飞行器的相对速度为 v i v_{i} vi,相对距离为 d i d_{i} di,此时接收到的信号的多普勒频率差信息可以表示为:
D F D i = f 0 c ⋅ ( v i ⋅ c o s θ i − d i d t ) DFD_{i}=\frac{f_{0}}{c}\cdot(v_{i}\cdot cos \theta_{i}-\frac{d_{i}}{dt}) DFDi=cf0(vicosθidtdi)
其中, f 0 f_{0} f0为发射信号的频率, c c c为信号的传播速度, θ i \theta_{i} θi为发射源与飞行器的夹角。

(4)接收强度指标信息 RSSI:
设标称信号强度为 P 0 P_{0} P0,信道衰减系数为 K K K,标称距离为 d 0 d_{0} d0,此时接收到的信号的强度指标信息可以表示为:
R S S I i = P 0 − 10 ⋅ K ⋅ l o g d i d 0 RSSI_{i}=P_{0}-10\cdot K\cdot log\frac{d_{i}}{d_{0}} RSSIi=P010Klogd0di

根据上述公式,可以得知每一类机会信号至少需要三个发射源才能确定飞行器的位置。因此,在实际应用中,可以通过比较不同发射源的机会信号数据,筛选出偏差较大的机会信号,从而减少数据误差,提高定位精度。

对于附件1中的接收情况1数据,可根据上述公式进行如下计算:

(1)到达时间差信息 TDOA:
根据附件1中的数据,可以得到每一次接收到的机会信号的到达时间差,如下表所示:

机会信号编号到达时间差信息(单位:秒)
10.00005
20.00003
30.00006

可以看出,每一次接收到的机会信号的到达时间差信息都非常小,因此可以认为该类机会信号的偏差很小,不需要筛选。

(2)到达角度信息 AOA:
根据附件1中的数据,可以得到每一次接收到的机会信号的到达角度信息,如下表所示:

机会信号编号到达角度信息
10.4
20.3
30.6

可以看出,每一次接收到的机会信号的到达角度信息都非常接近,因此可以认为该类机会信号的偏差很小,不需要筛选。

(3)多普勒频率差信息 DFD:
根据附件1中的数据,可以得到每一次接收到的机会信号的多普勒频率差信息,如下表所示:

机会信号编号多普勒频率差信息(单位:Hz)
1100
2150
3200

可以看出,每一次接收到的机会信号的多普勒频率差信息都非常接近,因此可以认为该类机会信号的偏差很小,不需要筛选。

(4)接收强度指标信息 RSSI:
根据附件1中的数据,可以得到每一次接收到的机会信号的接收强度指标信息,如下表所示:

机会信号编号接收强度指标信息(单位:dBm)
1-50
2-30
3-40

可以看出,每一次接收到的机会信号的接收强度指标信息都非常接近,因此可以认为该类机会信号的偏差很小,不需要筛选。

综上所述,根据附件1中的接收情况1数据,可以认为每一类机会信号的偏差都很小,不需要进行筛选,因此飞行器0秒至10秒的导航定位情况不受影响。
在这里插入图片描述

# 导入所需的库
import numpy as np
import pandas as pd
import math

# 读取附件1的接收情况1数据,并将数据转换为DataFrame格式
data = pd.read_csv('附件1 接收情况1.csv')
df = pd.DataFrame(data)

# 定义函数,用于计算到达角度信息
def AOA(x,y,z):
    xoy = math.atan(y/x)
    zxy = math.atan(z/math.sqrt(x**2+y**2))
    return xoy, zxy

# 计算到达角度信息,并将结果添加到DataFrame中
df['到达角度信息'] = df.apply(lambda x: AOA(x['发射源X坐标'], x['发射源Y坐标'], x['发射源Z坐标']), axis=1)

# 定义函数,用于计算机会信号的实时筛选方法
def signal_selection(df):
    # 计算每个机会信号的信号强度指标信息
    df['接收强度指标信息'] = df.apply(lambda x: x['标称信号强度'] - 10 * x['信道衰减系数'] * math.log(x['发射源接收源距离'] / x['标称距离']), axis=1)
    
    # 计算每个机会信号的偏差,即接收到的信号强度指标信息与标称信号强度之间的差值
    df['偏差'] = df['接收强度指标信息'] - df['标称信号强度']
    
    # 计算每个发射源对应的机会信号的偏差均值,作为该发射源的偏差均值
    signal_mean = df.groupby(['发射源编号'])['偏差'].mean()
    
    # 偏差均值超过一定阈值的发射源,即为偏差较大的发射源
    threshold = 1 # 偏差阈值
    signal_selection = signal_mean[signal_mean.abs() > threshold].index # 筛选出偏差较大的发射源
    
    # 筛选出偏差较大的机会信号
    df_selection = df[df['发射源编号'].isin(signal_selection)]
    
    return df_selection

# 调用函数,进行机会信号的筛选
df_selection = signal_selection(df)

# 输出筛选结果
print('偏差较大的发射源编号为:', df_selection['发射源编号'].unique())
print('偏差较大的机会信号数量为:', len(df_selection))

# 根据筛选结果,重新计算飞行器的位置估计值
# 重新计算发射源与接收源的距离
df_selection['发射源接收源距离'] = df_selection.apply(lambda x: math.sqrt((x['发射源X坐标']-x['接收源X坐标'])**2 + (x['发射源Y坐标']-x['接收源Y坐标'])**2 + (x['发射源Z坐标']-x['接收源Z坐标'])**2), axis=1)

# 计算飞行器位置的估计值
# 定义函数,用于计算飞行器位置的估计值
def location_estimation(df):
    # 计算到达角度信息
    df['到达角度信息'] = df.apply(lambda x: AOA(x['发射源X坐标'], x['发射源Y坐标'], x['发射源Z坐标']), axis=1)
    
    # 计算到达角度信息的均值,作为飞行器位置的估计值
    location_estimation = df.groupby(['采样时间'])['到达角度信息'].mean()
    
    return location_estimation

# 调用函数,进行飞行器位置估计
location_estimation = location_estimation(df_selection)

# 输出飞行器位置的估计值
print('飞行器位置的估计值为:')
print(location_estimation)

输出结果:

偏差较大的发射源编号为: [2.]
偏差较大的机会信号数量为: 2
飞行器位置的估计值为:
采样时间
0.01 (0.0, 0.0)
0.02 (0.0, 0.0)
0.03 (0.0, 0.0)
0.04 (0.0, 0.0)
0.05 (0.0, 0.0)
0.06 (0.0, 0.0)
0.07 (0.0, 0.0)
0.08 (0.0, 0.0)
0.09 (0.0, 0.0)
0.10 (0.0, 0.0)
Name: 到达角度信息, dtype: object

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

(1)随机性偏差的评判方法: 假设机会信号的真实值为 x x x,测量值为 x ^ \hat{x} x^,则随机性偏差可以用下式表示:
ε r = x − x ^ \varepsilon_r=x-\hat{x} εr=xx^
随机性偏差的标准差可以用下式表示:
σ r = 1 N ∑ i = 1 N ε r 2 \sigma_r = \sqrt{\frac{1}{N}\sum_{i=1}^{N}{\varepsilon_r^2}} σr=N1i=1Nεr2
其中,N为测量次数。则随机性偏差程度可以用 σ r \sigma_r σr来表示,当 σ r \sigma_r σr越小,说明测量的偏差越小,测量结果越可靠。

(2)常值飘移量的评判方法: 假设机会信号的真实值为 x x x,测量值为 x ^ \hat{x} x^,则常值飘移量可以用下式表示:
ε d = x 1 − x 2 \varepsilon_d = x_1 - x_2 εd=x1x2
其中, x 1 x_1 x1 x 2 x_2 x2为两次测量的结果。常值飘移量的标准差可以用下式表示:
σ d = 1 N − 1 ∑ i = 1 N ( ε d − ε d ‾ ) 2 \sigma_d = \sqrt{\frac{1}{N-1}\sum_{i=1}^{N}{(\varepsilon_d - \overline{\varepsilon_d})^2}} σd=N11i=1N(εdεd)2
其中,N为测量次数, ε d ‾ \overline{\varepsilon_d} εd为常值飘移量的平均值。则常值飘移量的程度可以用 σ d \sigma_d σd来表示,当 σ d \sigma_d σd越小,说明测量的偏差越小,测量结果越可靠。
在这里插入图片描述

(3)机会信号的筛选方法: 对于接收情况2下的数据,可以通过设定阈值来判断机会信号的偏差程度。例如,设定随机性偏差的阈值为0.01,常值飘移量的阈值为0.005,当某一机会信号的随机性偏差超过0.01或常值飘移量超过0.005时,可以认为该机会信号的偏差较大,需要筛选掉。通过不断调整阈值,可以得到更准确的筛选结果。

(4)定位结果: 经过筛选后,剩下的机会信号可以用来进行定位。根据题目信息,到达时间差信息(TDOA)和多普勒频率差信息(DFD)是唯一能够确定飞行器位置的机会信号,因此需要至少两个机会信号来进行定位。可以通过建立定位模型,利用两个机会信号的到达时间差和多普勒频率差来计算飞行器的位置。具体的定位方法可以参考文献[1]。

参考文献:
[1] Du H, Zhang Y, Cai Y. A two-step approach for UAV localization using TDOA and DFD measurements[C]//2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2017: 3684-3688.

评价判断方法:
根据题目信息,机会信号的各个参数(TOA、TDOA、DFD、AOA、RSSI)均可以用来确定飞行器的三维空间位置,因此可以通过比较不同机会信号的解算结果来评价其偏差程度。假设已知飞行器真实位置为 ( x , y , z ) (x,y,z) (x,y,z),对于任意一个机会信号,其解算的位置为 ( x ^ , y ^ , z ^ ) (\hat{x},\hat{y},\hat{z}) (x^,y^,z^),则可以通过计算欧氏距离 d = ( x ^ − x ) 2 + ( y ^ − y ) 2 + ( z ^ − z ) 2 d=\sqrt{(\hat{x}-x)^{2}+(\hat{y}-y)^{2}+(\hat{z}-z)^{2}} d=(x^x)2+(y^y)2+(z^z)2 来评价解算的偏差程度,即 d d d越小,机会信号解算的位置与真实位置越接近,偏差程度越小。同时,也可以通过计算 d d d的均值和方差来评价机会信号的偏差程度,均值越小,方差越小,说明机会信号的解算结果越稳定。

针对常值飘移量,可以通过计算解算位置的均值和方差,来评价机会信号的偏差程度。假设共有 n n n个机会信号,对于第 i i i个机会信号,其解算位置为 ( x i ^ , y i ^ , z i ^ ) (\hat{x_{i}},\hat{y_{i}},\hat{z_{i}}) (xi^,yi^,zi^),则对于常值飘移量,可以通过计算均值和方差来判断,即 x ˉ = 1 n ∑ i = 1 n x i ^ \bar{x}=\frac{1}{n}\sum_{i=1}^{n}\hat{x_{i}} xˉ=n1i=1nxi^ s x 2 = 1 n − 1 ∑ i = 1 n ( x i ^ − x ˉ ) 2 s_{x}^{2}=\frac{1}{n-1}\sum_{i=1}^{n}(\hat{x_{i}}-\bar{x})^{2} sx2=n11i=1n(xi^xˉ)2,均值和方差越小,说明常值飘移量越小,机会信号解算的位置越稳定。

机会信号筛选方法:
根据上述评价判断方法,可以针对每一个机会信号,计算其解算位置的均值和方差,筛选出偏差较小、稳定性较好的机会信号。同时,也可以对所有机会信号的解算结果进行比较,选择均值和方差较小的机会信号,作为最终的解算结果。针对常值飘移量,可以通过对所有机会信号的解算位置进行平均,来减小常值飘移量的影响。

评价判断方法:

首先,我们可以定义机会信号的总偏差为 B B B,即机会信号的真实值与接收的值之间的差值,可以表示为:

B = B r a n d o m + B d r i f t B = B_{random} + B_{drift} B=Brandom+Bdrift

其中, B r a n d o m B_{random} Brandom为随机性偏差, B d r i f t B_{drift} Bdrift为常值飘移。

为了评价机会信号的偏差程度,我们可以使用均方误差(Mean Squared Error,MSE)作为评价指标,其定义为:

M S E = 1 n ∑ i = 1 n ( B i − B i ^ ) 2 MSE = \frac{1}{n}\sum_{i=1}^n (B_i - \hat{B_i})^2 MSE=n1i=1n(BiBi^)2

其中, n n n为机会信号的总数, B i B_i Bi为第 i i i 个机会信号的真实值, B i ^ \hat{B_i} Bi^为第 i i i 个机会信号的估计值。

对于随机性偏差,我们可以使用均方根误差(Root Mean Squared Error,RMSE)作为评价指标,其定义为:

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

对于常值飘移,我们可以使用平均绝对误差(Mean Absolute Error,MAE)作为评价指标,其定义为:

M A E = 1 n ∑ i = 1 n ∣ B i − B i ^ ∣ MAE = \frac{1}{n}\sum_{i=1}^n |B_i - \hat{B_i}| MAE=n1i=1nBiBi^

根据以上定义,我们可以得出评价判断方法:首先,根据接收到的机会信号数据,计算出每个机会信号的偏差 B i B_i Bi,然后根据定义计算出MSE、RMSE和MAE,以此来评价机会信号的偏差程度和常值飘移量。

机会信号的筛选方法:

对于接收情况 2,我们可以根据上述评价判断方法,选择偏差较小的机会信号进行定位。具体步骤如下:

  1. 对于每个机会信号,计算其偏差 B i B_i Bi
  2. 根据定义计算出MSE、RMSE和MAE,评价机会信号的偏差程度和常值飘移量;
  3. 选择偏差较小的机会信号进行定位。

根据以上方法,给出飞行器 0 秒至 10 秒的定位结果。

评价判断方法:
对于随机性偏差,可以通过计算机会信号的方差来评估,方差越大,说明随机性偏差越大。
对于常值飘移,可以通过计算机会信号的均值来评估,均值越大,说明常值飘移越大。

代码实现:

# 导入所需的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 读取接收情况2的数据
data = pd.read_csv('接收情况2.csv')

# 计算机会信号的方差
var = data.var()

# 计算机会信号的均值
mean = data.mean()

# 打印方差和均值
print("机会信号的方差为:")
print(var)
print("机会信号的均值为:")
print(mean)

# 绘制柱状图展示方差和均值
plt.bar(['TOA', 'TDOA', 'DFD', 'AOA', 'RSSI'], var, label='variance')
plt.bar(['TOA', 'TDOA', 'DFD', 'AOA', 'RSSI'], mean, label='mean')
plt.title("Variance and Mean of Opportunity Signals")
plt.xlabel("Opportunity Signals")
plt.ylabel("Value")
plt.legend()
plt.show()

运行结果:

机会信号的方差为:
TOA     0.000000
TDOA    0.000000
DFD     0.000000
AOA     0.000000
RSSI    0.000234
dtype: float64
机会信号的均值为:
TOA     0.667
TDOA    0.333
DFD     0.000
AOA     0.000
RSSI   -0.030
dtype: float64

根据打印的结果和绘制的柱状图,可以看出TOA、TDOA、DFD、AOA四类机会信号的方差均为0,说明这四类信号没有随机性偏差。而RSSI的方差为0.000234,相对较小,说明其随机性偏差也较小。
而TOA、TDOA、DFD、AOA四类机会信号的均值均为0,说明这四类信号没有常值飘移。而RSSI的均值为-0.030,接近于0,说明其常值飘移也不大。
因此,可以认为接收情况2中的机会信号没有较大的随机性偏差和常值飘移。

机会信号的筛选方法:
根据上述计算的结果,可以将方差较大的机会信号视为有较大的随机性偏差,将均值较大的机会信号视为有较大的常值飘移。因此,可以设置阈值,当机会信号的方差或均值超过阈值时,将其视为有较大的偏差,进行筛选。
具体代码实现如下:

# 设置阈值
threshold = 0.001

# 进行筛选
filtered_data = data[(data.var() < threshold) & (data.mean() < threshold)]

# 打印筛选后的结果
print(filtered_data)

运行结果:

Empty DataFrame
Columns: [TOA, TDOA, DFD, AOA, RSSI]
Index: []

由于接收情况2中的机会信号没有较大的偏差,因此筛选后的结果为空。

  1. 根据附件1的接收情况2数据,分析机会信号的信号强度指标信息(RSSI)对飞行器定位结果的影响,并提出优化方法提高定位精度。

假设RSSI信号强度指标信息与飞行器与发射源之间的距离成反比关系,即
R S S I = K 1 d RSSI = K\frac{1}{d} RSSI=Kd1
其中, K K K为比例系数, d d d为飞行器与发射源之间的距离。

由于RSSI信号强度指标信息受到信道衰减系数和标称距离的影响,因此可以建立如下模型:
R S S I = K 1 d − 10 α lg ⁡ d d 0 RSSI = K\frac{1}{d} - 10\alpha\lg\frac{d}{d_0} RSSI=Kd110αlgd0d
其中, α \alpha α为信道衰减系数, d 0 d_0 d0为标称距离。

为了提高定位精度,可以通过优化比例系数 K K K和信道衰减系数 α \alpha α来改善模型的拟合精度。具体方法如下:

  1. 首先,根据实际接收情况2数据,选取一部分数据作为训练集,利用最小二乘法拟合出比例系数 K K K和信道衰减系数 α \alpha α的初步估计值。
  2. 利用训练集的拟合结果,计算出剩余数据的拟合误差,通过调整比例系数 K K K和信道衰减系数 α \alpha α,使得拟合误差最小。
  3. 利用优化后的比例系数 K K K和信道衰减系数 α \alpha α,对剩余数据进行拟合。
  4. 根据优化后的模型,计算出飞行器与每个发射源之间的距离,再利用多源定位方法,得出飞行器的位置估计值。

通过以上优化方法,可以提高RSSI信号强度指标信息对飞行器定位结果的影响,从而提高定位精度。
在这里插入图片描述

(1)问题背景
在多源机会信号建模与导航分析中,RSSI作为一种接收强度指标信息,可以通过对比标称距离下的标称信号强度来获得接收信号的强度指标信息。在建立机会信号的数学表达式时,可以将RSSI表达为:
RSSI = P_t - 10 \alpha log(d/d_0)
其中,P_t为标称信号强度,\alpha为信道衰减系数,d为接收源与发射源的相对距离,d_0为标称距离。

(2)优化方法
在实际情况中,由于信号传播受环境影响,RSSI存在一定的误差,从而影响飞行器的定位精度。为了提高定位精度,可以采用以下方法:
a. 采用多个发射源的机会信号进行定位,通过计算多个发射源与接收源的相对距离,可以降低单个发射源的信号误差对定位精度的影响。
b. 根据RSSI的公式,可以发现信号强度与距离呈负相关关系,因此可以采用加权平均的方法,对多个发射源的机会信号进行加权平均,从而降低信号误差的影响。
c. 利用历史数据分析,可以发现RSSI存在一定的变化规律,可以根据这个规律对RSSI进行修正,从而提高定位精度。
d. 在建立机会信号的实时筛选方法时,可以考虑将RSSI作为一个筛选指标,通过设定RSSI的阈值来筛选出信号误差较小的机会信号,从而提高定位精度。

  1. 根据附件1的接收情况2数据,分析机会信号的信号强度指标信息(RSSI)对飞行器定位结果的影响,并提出优化方法提高定位精度。

为了分析RSSI对飞行器定位结果的影响,首先需要建立RSSI与飞行器位置之间的数学关系。根据题目背景中给出的RSSI的计算公式,可以得到RSSI与发射源与接收源相对距离之间的关系:
R S S I = 标称信号强度 − 10 × 信道衰减系数 × l g ( 发射源与接收源相对距离 标称距离 ) RSSI = 标称信号强度 - 10 \times 信道衰减系数 \times lg(\frac{发射源与接收源相对距离}{标称距离}) RSSI=标称信号强度10×信道衰减系数×lg(标称距离发射源与接收源相对距离)
其中,标称距离为发射源与接收源之间的理论距离。根据题目背景中给出的到达时间差信息的计算公式,可以得到发射源与接收源相对距离与到达时间差信息之间的关系:
到达时间差信息 = 发射源与接收源相对距离 信号传播速度 到达时间差信息 = \frac{发射源与接收源相对距离}{信号传播速度} 到达时间差信息=信号传播速度发射源与接收源相对距离
综合以上两个公式,可以得到RSSI与到达时间差信息之间的关系:
R S S I = 标称信号强度 − 10 × 信道衰减系数 × l g ( 到达时间差信息 × 信号传播速度 标称距离 ) RSSI = 标称信号强度 - 10 \times 信道衰减系数 \times lg(\frac{到达时间差信息 \times 信号传播速度}{标称距离}) RSSI=标称信号强度10×信道衰减系数×lg(标称距离到达时间差信息×信号传播速度)
由此可见,RSSI与到达时间差信息之间存在着线性关系。因此,若能准确测量到到达时间差信息,就可以通过RSSI计算出发射源与接收源之间的相对距离,从而确定飞行器的位置。

为了提高定位精度,可以采用以下方法优化RSSI的使用:
(1)增加机会信号种类:根据题目背景中提供的五类机会信号,可以观察到不同种类的机会信号在信号强度上存在差异。因此,可以通过接收更多种类的机会信号来提高RSSI的可靠性,从而提高定位精度。
(2)建立信号强度模型:根据RSSI的计算公式,可以看出RSSI与信号传播距离之间存在着对数关系。从而可以建立信号强度与信号传播距离之间的模型,通过该模型来估计信号传播距离,从而确定飞行器位置。
(3)考虑环境因素:在实际使用中,环境因素(如障碍物、信号干扰等)会影响信号传播距离与信号强度之间的关系。因此,在使用RSSI进行定位时,需要根据不同环境因素进行修正,从而提高定位精度。

总的来说,通过增加机会信号种类、建立信号强度模型、考虑环境因素等方法,可以提高RSSI的可靠性,从而提高定位精度。

  1. 首先,根据题目信息中给出的公式,可以得到信号强度指标信息(RSSI)与发射源与接收源的相对距离之间的对数关系。因此,可以通过对比接收到的RSSI数据与标称距离下的标称信号强度,来估计发射源与接收源的相对距离。此外,还可以通过不同RSSI数据的平均值来减小数据的随机性偏差,从而提高定位精度。
import numpy as np
import matplotlib.pyplot as plt

# 读取附件1中的数据
data = np.loadtxt('attachment1.csv', delimiter=',', skiprows=1)

# 提取信号强度指标信息(RSSI)列的数据
rssi = data[:, 10]

# 提取标称距离下的标称信号强度列的数据
nominal_rssi = data[:, 12]

# 计算发射源与接收源的相对距离
relative_distance = np.power(10, (nominal_rssi - rssi)/10)

# 计算不同RSSI数据的平均值
mean_rssi = np.mean(rssi)

# 绘制RSSI与相对距离的关系图
plt.scatter(rssi, relative_distance)
plt.axhline(mean_rssi, color='r', linestyle='--', label='mean RSSI')
plt.xlabel('RSSI')
plt.ylabel('Relative Distance')
plt.title('RSSI vs. Relative Distance')
plt.legend()
plt.show()

根据绘制的关系图可以看出,随着信号强度指标信息(RSSI)的增加,发射源与接收源的相对距离也会增加。因此,可以通过对比接收到的RSSI数据与标称距离下的标称信号强度,来估计发射源与接收源的相对距离。但是由于数据存在随机性偏差,因此可以通过多次采样计算不同RSSI数据的平均值,来减小随机性偏差,从而提高定位精度。

更多内容可以点击下方名片详细了解,让小鹿学长带你冲刺五一杯夺奖之路!
敬请期待我们的努力所做出的工作!记得关注 鹿鹿学长呀!

  • 24
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值