【MATLAB例程】AOA與TDOA混合定位例程,適用于二維環境、3個錨點的定位|附代碼下載鏈接

在這里插入圖片描述

本 MATLAB 程序實現了基于 Angle of Arrival (AOA)Time Difference of Arrival (TDOA) 的二維定位方法,通過自適應融合最小二乘優化,實現對未知目標的高精度估計。本例中固定使用了 3 個基站(錨點),算法框架支持擴展到更多基站。
直接運行后可得到二維、3個錨點的TDOA(到達時間差)與AOA(到達角度)的混合定位方法的定位結果展示與對比

文章目錄

  • 程序簡介
    • 系統模型與參數
    • TDOA建模
    • AOA建模
    • AOA/TDOA混合定位方法
  • 運行結果
  • MATLAB源代碼

程序簡介

系統模型與參數

  • 目標位置:未知點 p=[x,y]?\mathbf{p} = [x, y]^\topp=[x,y]?

  • 錨點位置:第 iii 個基站坐標為 si=[xi,yi]?\mathbf{s}_i = [x_i, y_i]^\topsi?=[xi?,yi?]?i=1,2,3i = 1, 2, 3i=1,2,3

  • 噪聲模型

    • AOA噪聲:高斯白噪聲 N(0,σθ2)\mathcal{N}(0, \sigma_\theta^2)N(0,σθ2?),默認 σθ=10?2\sigma_\theta = 10^{-2}σθ?=10?2
    • TDOA噪聲:高斯白噪聲 N(0,σt2)\mathcal{N}(0, \sigma_t^2)N(0,σt2?),默認 σt=10?10\sigma_t = 10^{-10}σt?=10?10

TDOA建模

TDOA測量基于不同基站之間接收到信號的時間差。對于目標到第 iii 個基站的理想距離為:

ri=∥p?si∥2r_i = \| \mathbf{p} - \mathbf{s}_i \|_2 ri?=p?si?2?

TDOA觀測值定義為:

Δri=ri?r1+ni,i=2,3\Delta r_i = r_i - r_1 + n_i, \quad i=2,3 Δri?=ri??r1?+ni?,i=2,3

對應時間差:

Δti=Δric,c為光速\Delta t_i = \frac{\Delta r_i}{c}, \quad c \text{ 為光速} Δti?=cΔri??,c?為光速

最終形成的觀測方程:

Ri=ri?r1,i=2,3R_i = r_i - r_1, \quad i=2,3 Ri?=ri??r1?,i=2,3

用于構建非線性約束方程,后續由最小二乘方法迭代解算。

AOA建模

AOA 使用信號到達方向(角度)進行定位。第 iii 個基站測得的理想角度為:

θi=arctan?2(y?yi,x?xi)\theta_i = \arctan2(y - y_i, x - x_i) θi?=arctan2(y?yi?,x?xi?)

加入角度噪聲 nθ,i~N(0,σθ2)n_{\theta,i} \sim \mathcal{N}(0, \sigma_\theta^2)nθ,i?N(0,σθ2?) 后,構造以下線性測量模型:

sin?(θi)(x?xi)?cos?(θi)(y?yi)=0\sin(\theta_i)(x - x_i) - \cos(\theta_i)(y - y_i) = 0 sin(θi?)(x?xi?)?cos(θi?)(y?yi?)=0

整理成最小二乘形式 Hp=Y\mathbf{H}\mathbf{p} = \mathbf{Y}Hp=Y

Hi=[sin?(θi)?cos?(θi)],Yi=xisin?(θi)?yicos?(θi)\mathbf{H}_i = \begin{bmatrix} \sin(\theta_i) & -\cos(\theta_i) \end{bmatrix}, \quad \mathbf{Y}_i = x_i \sin(\theta_i) - y_i \cos(\theta_i) Hi?=[sin(θi?)??cos(θi?)?],Yi?=xi?sin(θi?)?yi?cos(θi?)

所有基站數據合并后估計目標位置:

p^AOA=(H?H)?1H?Y\hat{\mathbf{p}}_{AOA} = (\mathbf{H}^\top \mathbf{H})^{-1} \mathbf{H}^\top \mathbf{Y} p^?AOA?=(H?H)?1H?Y

AOA/TDOA混合定位方法

詳見代碼中的注釋。

運行結果

運行結果如下:
在這里插入圖片描述
命令行輸出的定位結果與誤差:
在這里插入圖片描述

MATLAB源代碼

程序結構如下:
在這里插入圖片描述
部分代碼如下:

% AOA與TDOA混合定位例程,適用于二維環境、3個錨點的定位
% 作者:matlabfilter
% 2025-07-05/Ver1%% 初始化
clc;clear;close all;
rng(0);
% 定義參數和待測點位置
num_stations = 3; % 基站數量(錨點數量)
TDOA_noise = 1e-10; %TDOA誤差
AOA_noise = 1e-2; % AOA 角度噪聲
% 固定基站位置
stations_position = 100*randn(3,2);
c = 3e8;
% 待定位點
position = 0*ones(1,2)+5*randn(1,2);
% TDOA 建模
delta = ones(3,1)*position - stations_position; %未知點與各基站之間的相對位置(矢量)
r_ideal = (sum(delta.^2,2)).^(1/2); %計算移動臺到各個基站的實際距離(標量)
delta_t = r_ideal/c+TDOA_noise*randn(size(r_ideal));
r = delta_t*c;
Ri = r(2:end,:);
R1 = ones(2,1)*r(1,:);
R = Ri-R1; %表示從[2,i]開始MS與基站i和基站1的距離差%% AOA定位
% 計算目標到各基站的距離
num_station = size(stations_position, 1);
% true_distances = vecnorm(stations_position - position, 2, 2);% 模擬接收到的AOA(此時是角度理想值,后面要加噪聲)
azimuth_angles = atan2(position(2) - stations_position(:, 2), position(1) - stations_position(:, 1));% 假設測量的AOA角度和距離上加一些噪聲
azimuth_angles = azimuth_angles + AOA_noise * randn(num_station, 1);
% 使用最小二乘法進行定位估計 直接求解(無需距離)
H = zeros(1*num_station,2);
Y = zeros(1*num_station,1);

完整代碼的下載鏈接:https://download.csdn.net/download/callmeup/91274669

如需幫助,或有導航、定位濾波相關的代碼定制需求,請點擊下方卡片聯系作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88233.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88233.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88233.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

磐維數據庫panweidb集中式集群配置VIP【添加、刪除和修改】

0 說明 panweidb集中式集群為了防止主備切換后應用連接無法切換到新主庫,需要配置vip,應用可以只通過該ip與數據庫連接,不用感知數據庫在哪個節點上。 panweidb中配置 VIP主要依賴 CM 組件的 VIP 仲裁功能,通過回調腳本在主備切換…

python的保險業務管理與數據分析系統

前端開發框架:vue.js 數據庫 mysql 版本不限 后端語言框架支持: 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 數據庫工具:Navicat/SQLyog等都可以 保險行業…

R語言如何接入實時行情接口

目錄 1. 安裝必要的R包 2. 導入庫 3. 連接WebSocket 4. 處理連接成功后的操作 5. 處理接收到的消息 6. 處理連接關閉和錯誤 7. 發送心跳數據 8. 自動重連機制 9. 啟動連接和重連 總結 在數據分析和金融研究中,實時行情數據的獲取至關重要,但市…

Redis數據安全性分析

Redis高可用與數據安全機制深度解析前置知識:Redis基礎安裝與使用(主從復制、哨兵集群、Cluster集群搭建)一、Redis性能壓測工具 工具名稱:redis-benchmark核心作用:快速基準測試Redis性能使用場景:評估不同…

差分和前綴和

差分和前綴和的原理、用法和區別。前綴和(Prefix Sum)核心思想:預處理數組的前綴和,快速回答「區間和查詢」 適用場景:數組靜態(更新少、查詢多),需要頻繁計算任意區間的和1. 定義與…

C++并發編程-12. 用內存順序實現內存模型

前情回顧 前文我們介紹了六種內存順序,以及三種內存模型,本文通過代碼示例講解六種內存順序使用方法,并實現相應的內存模型。全局一致性模型同步模型(獲取和釋放)松散模型memory_order_seq_cst memory_order_seq_cst代表全局一致性順序&#…

AI測試革命:從智能缺陷檢測到自愈式測試框架的工業實踐

AI測試革命:從智能缺陷檢測到自愈式測試框架的工業實踐 希望對大家有用! 目錄AI測試革命:從智能缺陷檢測到自愈式測試框架的工業實踐希望對大家有用!一、傳統測試之殤:工業質檢的切膚之痛二、智能缺陷檢測系統架構1. …

二、深度學習——損失函數

二、損失函數損失函數定義:損失函數是用來衡量模型參數的質量的函數,衡量方式是比較網絡輸出和真實輸出的差異別名:損失函數(loss function),代價函數(cost function),目…

面向數據報的套接字通道技術詳解

數據報通道基礎 通道特性與創建方式 java.nio.channels.DatagramChannel類實例代表數據報通道,默認處于阻塞模式。通過configureBlocking(false)方法可將其配置為非阻塞模式。創建數據報通道需調用其靜態open()方法,若用于IP組播則需指定組播組的地址類型…

147.在 Vue3 中使用 OpenLayers 地圖上 ECharts 模擬飛機循環飛行

🧩 效果預覽 👇 飛機從多個城市起飛并向其他城市飛行,動畫流暢,地圖可縮放拖拽: 📦 一、項目技術棧 技術用途Vue 3現代前端框架OpenLayers地圖底圖渲染ECharts ol-echarts飛機飛行動畫渲染ol-echarts將 …

OCR與PDF解析的區別

我們日常所接觸的文檔中,經常能碰到多語言混合的文檔。比如論文試卷、財報研報、跨國票據都含有多種語言和文字。要將文檔中的內容識別并提取務必需要使用到OCR技術,而傳統的OCR工具在處理這類型文檔的時候有局限性。早期的 OCR 系統識別精度有限&#x…

Java 單例類詳解:從基礎到高級,掌握線程安全與高效設計

作為一名Java開發工程師,你一定對**單例模式(Singleton Pattern)**不陌生。它是23種經典設計模式中最簡單也是最常用的一種,用于確保一個類在整個應用程序中只有一個實例存在。單例廣泛應用于系統配置、數據庫連接池、日志管理器、…

面向對象設計

你列出的這些屬于 C 高級開發中面向對象設計與架構設計的核心知識,也是面試高級工程師崗位必問的內容。下面我按順序,深入講解每一項概念、原理、用途,并穿插 C 示例。? 1. 設計原則(SOLID)SOLID 是面向對象設計的五大…

IntelliJ IDEA讓我的開發效率翻倍:從新手到高效開發者的進階之路

IntelliJ IDEA讓我的開發效率翻倍:從新手到高效開發者的進階之路 🌟 嗨,我是IRpickstars! 🌌 總有一行代碼,能點亮萬千星辰。 🔍 在技術的宇宙中,我愿做永不停歇的探索者。 ? 用…

css sprites使用

CSS Sprites 是一種將多個小圖標或背景圖像合并到一個大圖中的技術。通過減少HTTP請求次數,可以顯著提高頁面加載速度。其核心原理是:通過設置元素的背景圖(background-image)為這個大圖,然后調整背景位置(…

分布式爬蟲在電商平臺商品數據大規模采集中的技術應用

在電商平臺商品數據大規模采集場景中,分布式爬蟲憑借其高效、可擴展、抗風險的特性,成為突破單節點爬蟲性能瓶頸的核心技術方案。以下從技術架構、關鍵技術點、電商場景適配及挑戰應對四個維度,解析其具體應用:一、分布式爬蟲的核…

Linux的`if test`和`if [ ]中括號`的取反語法比較 筆記250709

Linux的if test和if 中括號的取反語法比較 筆記250709 Linux的 test命令(或等價中括號寫法 [空格expression空格])的用法詳解. 筆記250709 四種取反語法: if ! test -e xxx ;then... 和 if test ! -e xxx ;then... 和 if ! [ -e xxx ] ;then... 和 if …

記錄使用ubuntu16.04編譯aosp(android8.1與10)遇到的問題

一、前言: 本來打算用wsl來編譯AOSP,但是折騰了好幾天,以失敗告終。后來使用vmware反而成功了。 本篇同樣會把wsl遇到的問題與嘗試記錄下來。 環境:vmware ubuntu16.04。 為什么會使用ubuntu16.04呢,因為在公司有一…

hiredis window之RFDMap

簡介 RFDMap用于將socket分配映射成連續的文件描述符,同時管理回收的文件描述符,因為ae構架中管理fd與對應事件處理器使用的是數據,fd作為數組下標 結構 #mermaid-svg-zQz2LTrKRi0LQTII {font-family:"trebuchet ms",verdana,arial…

RustFS一款Rust 驅動的 高性能 分布式存儲系統

演示地址:https://play.rustfs.com/browser 訪問賬號(默認 rustfsadmin)。 訪問密鑰(默認 rustfsadmin)。 下載mc https://dl.min.io/client/mc/release可以直接在 Linux 系統上安裝 mc(,然后訪…