2024数维杯数学建模A题35页完整解题思路+1,2问配套代码

(后续代码+参考论文持续更新)

              A  多源机会信号建模与导航分析

2024数维杯A题完整思路35页+配套代码+后续参考论文icon-default.png?t=N7T8https://www.jdmm.cc/file/2710634

(一)问题背景

尽管全球卫星定位系统下的定位导航技术已成熟, 但考虑到室内、隧道、建 筑密集区等复杂环境或全球卫星定位系统被毁失灵等突发场景, 会发生全球卫星 定位系统拒止情况, 无法有效定位导航。因此, 需要发展基于新型信号的自主定 位导航方法, 机会信号导航是目前一种可行的自主导航技术。机会信号是指存在 于空间域中的各类无线电信号, 具有不同的频段。在多个发射源发射多种机会信 号(机会信号中均带有发射源位置信息、发射时间信息) 的场景下, 考虑接收飞 行器的自主导航解算问题, 即: 飞行器根据接收到的机会信号信息, 通过飞行器 机载设备, 实时计算飞行器自身的三维空间位置。根据机会信号蕴含的信息来分 类,可以将机会信号分为五类: 达到时间信息(TOA)、到达时间差信息(TDOA)、

多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。

五类机会信号的

具体信息含义如下:

1)达到时间信息 TOA:信号传输时间 即飞行器接收信号时间与信号发射时

间的差。

2)到达时间差信息 TDOA:同一信号从两个发射源(同时发射)到达接收端

的时间差。

3)多普勒频率差信息 DFD:同一信号从两个发射源发射, 由于飞行器与信号 源具有相对速度, 接收信号会产生频率变化, 进而产生信号频率差, 具体计算方

式如下:

根据结合五类机会信号数据(TOA, TDOA, DFD, AOA, RSSI)的卡尔  曼滤波方法,我们得到了在最后一个采样时间点上的飞行器状态估计。

这些状态包括位置坐标(x,y,z)和速度(vx,vy,vz):

x位置: 0.480米

y位置: 51.61米

z位置: 23.18米

x速度: 0.0069米/秒

y速度: 0.086米/秒

z速度: 2.46米/秒

全部结果如下标所示

0.167639024

50.20981823

0.306828736

0.200481126

50.0383057

0.269052641

0.252338457

50.13401999

0.232708947

0.277293341

50.00534989

0.256833497

0.24010827

50.0035857

0.505714978

0.175725073

50.2170725

0.083868459

0.224353676

50.25922459

0.179733767

0.236802692

50.05655168

0.427747958

0.318821357

50.09673735

0.365122265

0.302493344

49.86873936

0.310617107

0.297992566

49.98352116

0.328463637

0.342013784

49.82971025

-0.015377651

0.32952757

49.98011325

-0.04078135

0.355792151

49.82529241

0.21763355

0.30281615

49.8559223

0.036163576

0.277025428

49.77354806

-0.144692196

0.271246664

49.84159572

-0.044343201



import


numpy


as np


2.

4.
5.    data_path = '2024 年第九届数维杯数学建模挑战赛题目  \\2024 年第九届数维杯数学建模挑战赛题目\\A 题\\附件一:多源 机会信号建模与导航分析问题.xlsx'
6.    signal_data = pd.read_excel(data_path, sheet_nam
e=None)



8.    transmitter_data = signal_data['机会信号参数与发
射源数据']

10.   speed_vectors = transmitter_data['数值
'][4:8].apply(lambda x: np.array(eval(x)))

12.

14.   reception1_data.columns = signal_data['接收情况
1'].iloc[0]

16.   sampling_interval = 0.01

18.   state_dimension = 6  # x, y, z, vx, vy, vz

20.   x_hat = np.zeros((number_of_steps, state_dimensi
on))

22.



24.   F = np.array([[1, 0, 0, sampling_interval, 0, 0]

,

[0, 0, 1, 0, 0, sampling_interval]

28.                  [0, 0, 0, 0, 1, 0],

30.   Q = np.eye(state_dimension) * 0.1

32.   I = np.eye(state_dimension)

33.		
34.	num_signals = 5	
35.	H = np.zeros((num_signals,	state_dimension))
36.	H[0, 0] = 1	
37.	H[1, 1] = 1	
38.	H[2, 2] = 1	
39.	H[3, 0] = 1	
40.   H[4, 1] = 1




44.   P = np.eye(state_dimension) * 1000

46.

48.       P = F @ P @ F.T + Q

50.                     reception1_data['TDOA(发射源 1,

)](发射源 4)'][t],


56.	K = P @ H.T @ np.linalg.inv(S)
57.	x_hat[t] += K @ (Z - H @ x_hat[t])
58.	P = (I - K @ H) @ P
59.	import pandas as pd



60.   x_hat_df = pd.DataFrame(x_hat, columns=['x', 'y'
, 'z', 'vx', 'vy', 'vz'])

62.   output_path = 'x_hat_results.csv'

64.   x_hat_df.to_csv(output_path, index=False)

最后我们对模拟的轨迹进行优化并画出轨迹图如下:

x

y

z

0.125810334

50.24988969

0.281371212

0.1829938

50.10308796

-0.021292213

0.201562094

49.8869984

-0.040429748

0.282851278

49.91879617

0.129599485

0.252143879

50.14092724

-0.386131847

0.169514974

50.20995332

-0.083372608

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值