当前位置: 首页 > news >正文

定位,用最通俗易懂的方法2:TDOA与对应的CRLB

二郎就不设置什么VIP可见啥的了,这样大家都能看到。
如果觉得受益,可以给予一些打赏,也算对原创的一些鼓励,谢谢。

钱的用途:1)布施给他人;2)二郎会有更多空闲时间写教程

起因:

二郎虽然也对TDOA和CRLB有所了解,而且写了一些相关的代码,但是还是觉得不够透彻,不能非常好地去教给别人,所以,本专题,二郎就用代码和解释并行,一步一步和大家说明,公式是怎么代码实现的,以及怎么仿真的。
论文《A Simple and Efficient Estimator for Hyperbolic Location》

仿真:

1)初始配置
clc; close all; clear all; warning off;  % 程序初始化。
L = 10e3;                               % 蒙特卡洛运行次数。            
randn('seed',0);                        % 初始化随机数生成器。uo = [-50 250]';                        % 真实源位置。x = [0 -5 4 -2 7 -7 2 -4 3 1];          % 真实传感器位置矩阵。
y = [0 8 6 4 3 5 5 2 3 8];
S = [x; y];M = size(S,2);                          % 传感器数量。
N = size(S,1);                          % 定位维度。ro = sqrt(sum((uo*ones(1,M)-S).^2))';   % 真实源-传感器的距离
rdo = ro(2:end)-ro(1);                  % 距离差,其他距离与第一个距离的差R = (eye(M-1)+ones(M-1))/2;             % TDOA 的协方差结构

论文对应:
1)距离差
在这里插入图片描述

2)协方差结构
论文原文
在这里插入图片描述
matlab运行结果
在这里插入图片描述

2)噪声变化配置
NsePwrVecdB = -60:4:-24;                % 改变测量噪声水平fprintf('模拟进行中');
for nseIdx = 1:length(NsePwrVecdB),     % 改变测量噪声水平fprintf('。');nsePwr = 10^(NsePwrVecdB(nseIdx)/10);Q = nsePwr * R;                     % TDOA(范围差)噪声的协方差矩阵

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里Q = nsePwr * R; 是噪声的线性功率值乘以单位协方差矩阵,构建出实际的协方差矩阵。

3)CRLB
crlb(nseIdx) = trace(TDOALocCRLB(S,uo,Q));

用迹是把x,y,z方向的误差方差相加

function [CRLB] = TDOALocCRLB(SensorPositions, SourceLocation, Q)
% SensorPositions: (Dim x M) 矩阵,每一列是一个传感器的位置,第一列是参考传感器
% SourceLocation: (Dim x 1) 源位置
% Q:              TDOA(范围差)向量的协方差矩阵
% CRLB:           (Dim x Dim) 估计源定位的 CRLB 矩阵% 通过输入我们就能看出,求CRLB是和传感器位置、源位置、协方差矩阵有关的M = length(Q) + 1;if (M < size(SensorPositions, 1) + 2)fprintf('传感器数量至少应为 %d\n', size(SensorPositions, 1) + 2);return;
end;if (rank(SensorPositions) < size(SensorPositions, 1))disp('传感器不应位于同一平面或直线上!');return;
endS = SensorPositions; 
u = SourceLocation;M = size(SensorPositions, 2);
ro = sqrt(sum((u * ones(1, M) - S).^2)); %传感器和声源的距离d_u = (S(:, 2:end) - u * ones(1, M - 1))' ./ (ro(2:end)' * ones(1, size(S, 1))) ...- ones(M - 1, 1) * ((S(:, 1) - u)' / ro(1));J = d_u' * inv(Q) * d_u;    % FIM
CRLB = inv(J);

论文对应:
1)Gt

d_u = (S(:, 2:end) - u * ones(1, M - 1))' ./ (ro(2:end)' * ones(1, size(S, 1))) ...- ones(M - 1, 1) * ((S(:, 1) - u)' / ro(1));

在这里插入图片描述
对应-Gt,这个负号其实没关系,因为有两个,相当于负负得正,还是一样的。在这里插入图片描述
2)公式求解
c是信号传播速度,由于使用的r,不涉及速度,因此c=1。

J = d_u' * inv(Q) * d_u;    % FIM
CRLB = inv(J);

在这里插入图片描述

我们这里再重新体验一遍CRLB的推导过程

①构建测量值的似然函数,这里测量值是r
在这里插入图片描述
②对对数似然函数进行求导
在这里插入图片描述
③构建zp的CRLB,对数似然函数的求导的积求期望
在这里插入图片描述
④得到FIR函数的形式后求逆,得到CRLB
在这里插入图片描述

4)求TDOA的过程---蒙特卡洛
SimulationMSE = 0;
for k = 1 : L,                     					% 蒙特卡洛模拟。rdNse = sqrt(nsePwr/2) * randn(M,1);rd = rdo + rdNse(2:end)-rdNse(1);   			% 噪声源 TDOAs(范围差)。u = TDOALoc(S,rd,Q);SimulationMSE = SimulationMSE + norm(u-uo,2)^2; %多次计算的误差平方累加
end;
mse(nseIdx) = SimulationMSE/L;

S i = ( x i − x 0 ) 2 + ( y i − y 0 ) 2 S_i = (x_i - x_0)^2+(y_i - y_0)^2 Si=(xix0)2+(yiy0)2
r e s u l t = ( S 1 + S 2 + … … + S n ) / N result = (S_1+S_2+……+S_n)/N result=(S1+S2+……+Sn)/N

5)求TDOA的过程---两步法---第一步
function [SourceLocation] = TDOALoc(S, r, Q)
% S:        (Dim x M) 矩阵,每一列是一个传感器的位置,第一列是参考传感器,M 是传感器的数量,至少应为 Dim+2
% r:        (M-1) x 1 的 TDOA 测量值乘以信号传播速度
% Q:        r 向量的协方差矩阵
% SourceLocation: 估计的源位置RptCnt = 1;     % 第一阶段重新计算 W1 的重复次数M = length(r) + 1;R = sqrt(sum(S.^2))';%=========== 构建相关向量和矩阵 ============
h1 = r.^2 - R(2:end).^2 + R(1)^2;
G1 = -2 * [S(:, 2:end)' - ones(M-1, 1) * S(:, 1)', r];%============= 第一阶段 ===================================  
B = eye(M-1);
W1 = inv(B * Q * B');
u1 = inv(G1' * W1 * G1) * G1' * W1 * h1;for j = 1:max(1, RptCnt),ri_hat = sqrt(sum((S - u1(1:end-1) * ones(1, M)).^2));B = 2 * diag(ri_hat(2:M));  W1 = inv(B * Q * B');u1 = inv(G1' * W1 * G1) * G1' * W1 * h1;
endu1p = u1 - [S(:, 1); 0];

程序对应
1)构建相关向量和矩阵

%=========== 构建相关向量和矩阵 ============
h1 = r.^2 - R(2:end).^2 + R(1)^2;
G1 = -2 * [S(:, 2:end)' - ones(M-1, 1) * S(:, 1)', r];

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2)初始迭代

B = eye(M-1);
W1 = inv(B * Q * B');
u1 = inv(G1' * W1 * G1) * G1' * W1 * h1;

在这里插入图片描述
在这里插入图片描述

这是初始迭代,我们的权重设置的是对角线矩阵,也就是第一次只和协方差矩阵有关

3)获得初始的u1,然后完成权重的获取

for j = 1:max(1, RptCnt),ri_hat = sqrt(sum((S - u1(1:end-1) * ones(1, M)).^2));B = 2 * diag(ri_hat(2:M));  W1 = inv(B * Q * B');u1 = inv(G1' * W1 * G1) * G1' * W1 * h1;
end

这里有点差别,它没有用 r i 1 r_{i1} ri1,而是直接用声源的 x x x y y y,获得距离,进而按照距离进行加权
在这里插入图片描述
在这里插入图片描述

6)求TDOA的过程---两步法---第二步
1)定位结果计算的距离,应该等于计算的距离
u1p = u1 - [S(:, 1); 0];
%========== 第二阶段 =====================================
h2 = u1p.^2;
G2 = [eye(length(u1p) - 1); ones(1, length(u1p) - 1)];B2 = 2 * diag(u1p);
W2 = inv(B2') * (G1' * W1 * G1) * inv(B2);
u2 = inv(G2' * W2 * G2) * G2' * W2 * h2;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
计算出来的结果是平方的形式,需要利用之前求的结果,给出正负号

%=========== 映射 ========================================
SourceLocation = sign(diag(u1p(1:length(u2)))) * sqrt(abs(u2)) + S(:, 1);
%============================================================

至此,完成了求解,之后可以展示结果

结果展示:

    mse(nseIdx) = SimulationMSE/L;
end;
fprintf('\n');% 绘制结果。
figure(1); plot(NsePwrVecdB/2,10*log10(mse),'xk','MarkerSize',8); hold on;
plot(NsePwrVecdB/2,10*log10(crlb),'k'); grid on; hold off;xlabel('10 log(c\sigma)'); 
ylabel('10 log(MSE)');
legend('新方法','CRLB');
ylim([0 60]);

在这里插入图片描述

相关文章:

定位,用最通俗易懂的方法2:TDOA与对应的CRLB

二郎就不设置什么VIP可见啥的了&#xff0c;这样大家都能看到。 如果觉得受益&#xff0c;可以给予一些打赏&#xff0c;也算对原创的一些鼓励&#xff0c;谢谢。 钱的用途&#xff1a;1&#xff09;布施给他人&#xff1b;2&#xff09;二郎会有更多空闲时间写教程 起因&…...

Linux第一课:c语言 学习记录day06

四、数组 冒泡排序 两两比较&#xff0c;第 j 个和 j1 个比较 int a[5] {5, 4, 3, 2, 1}; 第一轮&#xff1a;i 0 n&#xff1a;n个数&#xff0c;比较 n-1-i 次 4 5 3 2 1 // 第一次比较 j 0 4 3 5 2 1 // 第二次比较 j 1 4 3 2 5 1 // 第三次比较 j 2 4 3 2 1 5 // …...

ExplaineR:集成K-means聚类算法的SHAP可解释性分析 | 可视化混淆矩阵、决策曲线、模型评估与各类SHAP图

集成K-means聚类算法的SHAP可解释性分析 加载数据集并训练机器学习模型 SHAP 分析以提取特征对预测的影响 通过混淆矩阵可视化模型性能 决策曲线分析 模型评估&#xff08;多指标和ROC曲线的目视检查&#xff09; 带注释阈值的 ROC 曲线 加载 SHAP 结果以进行下游分析 与…...

2025年第三届“华数杯”国际大学生数学建模竞赛A题题目

问题A&#xff1a;他能游得更快吗&#xff1f; 背景介绍 在2024年巴黎奥运会上&#xff0c;中国游泳运动员潘展乐凭借出色的表现成为全球瞩目的焦点。年仅19岁的他在男子100米自由泳比赛中以46秒40 的成绩夺冠&#xff0c;并创造了自己保持的世界纪录。在男子4100米混合泳接力…...

用c实现C++类(八股)

在 C 语言中&#xff0c;虽然没有内建的面向对象编程&#xff08;OOP&#xff09;特性&#xff08;如封装、继承、多态&#xff09;&#xff0c;但通过一些编程技巧&#xff0c;我们仍然可以模拟实现这些概念。下面将用通俗易懂的方式&#xff0c;逐步介绍如何在 C 中实现封装、…...

【C++多线程编程:六种锁】

目录 普通互斥锁&#xff1a; 轻量级锁 独占锁&#xff1a; std::lock_guard&#xff1a; std::unique_lock: 共享锁&#xff1a; 超时的互斥锁 递归锁 普通互斥锁&#xff1a; std::mutex确保任意时刻只有一个线程可以访问共享资源&#xff0c;在多线程中常用于保…...

【Javascript Day5】for循环及典型案例

for 循环 // 语法&#xff1a; for( 开始 ; 结束 ; 步长 ){ 循环体 } // for( var i 循环初始值 ; i的循环范围 ; i的增加或减少规则 ){ 循环体 } // 死循环 // for(;;){ // console.log("for循环"); // } // 循环打…...

#渗透测试#网络安全#一文了解什么是shell反弹!!!

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

《解锁图像的语言密码:Image Caption 开源神经网络项目全解析》

《解锁图像的语言密码&#xff1a;Image Caption 开源项目全解析》 一、开篇&#xff1a;AI 看图说话时代来临二、走进 Image Caption 开源世界三、核心技术拆解&#xff1a;AI 如何学会看图说话&#xff08;一&#xff09;深度学习双雄&#xff1a;CNN 与 RNN&#xff08;二&a…...

抢占欧洲电商高地,TikTok 运营专线成 “秘密武器”

在当今数字化浪潮席卷全球的时代&#xff0c;社交媒体平台已成为商业拓展的关键阵地&#xff0c;TikTok 更是其中的闪耀新星。近日&#xff0c;一则重磅消息引发行业关注&#xff1a;TikTok 正计划于 2025 年初进军荷兰电商市场。这一战略布局&#xff0c;不仅彰显了 TikTok 对…...

人工智能-数据分析及特征提取思路

1、概况 基于学生行为数据预测是否涉黄、涉黑等。 2.数据分析 数据分析的意义包括得到数据得直觉、发掘潜在的结构、提取重要的变量、删除异常值、检验潜在的假设和建立初步的模型。 2.1数据质量分析 2.1.1数据值分析 查看数据类型&#xff1a; 首先明确各字段的数据类型…...

2024 China Collegiate Programming Contest (CCPC) Zhengzhou Onsite 基础题题解

今天先发布基础题的题解&#xff0c;明天再发布铜牌题和银牌题的题解 L. Z-order Curve 思路&#xff1a;这题目说了&#xff0c;上面那一行&#xff0c;只有在偶数位才有可能存在1&#xff0c;那么一定存在这样的数&#xff0c;0 ,1,100, 10000,那么反之&#xff0c;我们的数…...

halcon3d 如何计算平面法向量!确实很简单

这个问题其实一直困扰了我很长时间,之前是怎么算的呢 对于一个平面,我会先求它的fit_primitives_object_model_3d去将它拟合,接下来用surface_normals_object_model_3d 算子生成它的法线,后用get_object_model_3d_params (ObjectModel3DNormals, ‘point_normal_x’, GenP…...

浅尝Appium自动化框架

浅尝Appium自动化框架 Appium自动化框架介绍Appium原理Appium使用安装平台驱动实战 坑 Appium自动化框架介绍 Appium 是一个开源的自动化测试框架&#xff0c;最初设计用于移动应用的测试&#xff0c;但现在它也扩展了对桌面端应用的支持。Appium 使得自动化测试变得更加简单&…...

网络安全测评技术与标准

网络安全测评概况 网络安全测评是网络信息系统和IT技术产品的安全质量保障。本节主要阐述网络安全测评的概念&#xff0c;给出网络安全测评的发展状况。 18.1.1 网络安全测评概念 网络安全测评是指参照一定的标准规范要求&#xff0c;通过一系列的技术和管理方法&#xff0c;获…...

【经典神经网络架构解析篇】【1】LeNet网络详解:模型结构解析、优点、实现代码

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

KGA:AGeneral Machine Unlearning Framework Based on Knowledge Gap Alignment

文章目录 摘要1 引言2 相关工作3 符号与定义4 我们的 KGA 框架4.1 KGA框架知识差距对齐目标 4.2 KGA在自然语言处理任务中的应用文本分类机器翻译响应生成 5 实验设置数据集评估指标参数设置比较方法 6 实验结果6.1 主要比较结果6.2 KGA 的优越性分析降低语言模型概率比较 6.3 …...

GelSight Mini视触觉传感器凝胶触头升级:增加40%耐用性,拓展机器人与触觉AI 应用边界

马萨诸塞州沃尔瑟姆-2025年1月6日-触觉智能技术领军企业Gelsight宣布&#xff0c;旗下Gelsight Mini视触觉传感器迎来凝胶触头的更新。经内部测试&#xff0c;新Gel凝胶触头耐用性提升40%&#xff0c;外观与触感与原凝胶触头保持一致。此次升级有效满足了客户在机器人应用中对设…...

springboot整合admin

1. 添加依赖 首先&#xff0c;在你的admin服务端pom.xml文件中添加Spring Boot Admin的依赖&#xff1a; <dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.5.4<…...

OS--常见的网络模型(包含IO多路复用的原理)

网络模型 IO模型主要就是用户空间和内核空间数据交换的形式。 IO模型 阻塞 I/O 模型&#xff08;Blocking I/O&#xff09; 应用程序发起 I/O 请求后&#xff0c;会被阻塞&#xff0c;直到 I/O 操作完成。 非阻塞 I/O 模型&#xff08;Non-blocking I/O&#xff09; 应用程序…...

LCE(Local Cascade Ensemble)预测模型和LSTM(Long Short-Term Memory)模型在效果和特点上存在显著差异

LCE&#xff08;Local Cascade Ensemble&#xff09;预测模型和LSTM&#xff08;Long Short-Term Memory&#xff09;模型在效果和特点上存在显著差异。以下是对两者的比较&#xff1a; 一、效果比较 LCE模型&#xff1a; 优势&#xff1a;LCE结合了随机森林和XGBoost的优势&a…...

【mysql】约束的基本使用

文章目录 1. PRIMARY KEY 约束1.1 作用1.2 关键字1.3 特点1.4 添加主键约束1.5 关于复合主键1.6 删除主键约束 2. 自增列&#xff1a;AUTO_INCREMENT2.1 作用2.2 关键字2.3 特点和要求2.4 如何指定自增约束2.5 如何删除自增约束2.6 MySQL 8.0新特性—自增变量的持久化 3. FOREI…...

EasyExcel(二)导出Excel表自动换行和样式设置

EasyExcel(一)导出Excel表列宽自适应 背景 在上一篇文章中解决导出列宽自适应,然后也解决了导出列宽不可超过255的问题。但是实际应用场景中仍然会有导出数据的长度超过列宽255。这时导出效果就会出现如下现象: 多出列宽宽度的内容会浮出来,影响后边列数据的显示。 解决…...

农产品直播带货方案拆解

作为一名经验丰富的营销策划人道叔&#xff0c;今天我来拆解一下咱们4A营销广告圈的这份《直播天府川农好物带货方案》&#xff0c;让你能学到很多实用的策略和技巧&#xff0c;直接应用到你的策划工作中去。 首先&#xff0c;咱们看看背景分析。 助农直播现在可是个大热门&a…...

“**H5**” 和 “**响应式**” 是前端开发中常见的术语,但它们的概念和使用场景有所不同

“H5” 和 “响应式” 是前端开发中常见的术语&#xff0c;但它们的概念和使用场景有所不同。以下是它们的区别以及为什么为移动端开发的页面通常被称为 “H5” 的解释&#xff1a; 1. 为什么为移动端开发的叫 “H5”&#xff1f; “H5” 是 HTML5 的简称&#xff0c;HTML5 是…...

基于EasyExcel实现通用版一对一、一对多、多层嵌套结构数据导出并支持自动合并单元格

接口功能 通用 支持一对一数据结构导出 支持一对多数据结构导出 支持多层嵌套数据结构导出 支持单元格自动合并 原文来自&#xff1a;https://blog.csdn.net/qq_40980205/article/details/136564176 新增及修复 基于我自己的使用场景&#xff0c;新增并能修复一下功能&#x…...

Java堆内存分析

(一)、线上查看堆内存统计 # 命令用于打印堆内存中每个类的实例数量及其占用的内存&#xff0c;并且只包括活动对象&#xff08;即存活的对象&#xff09; jmap -histo:live <pid># 输出到文件方便查看 jmap -histo:live 12345 > aaa.txt(二)、下载dump文件&#xff0…...

maven高级(day15)

Maven 是一款构建和管理 Java 项目的工具 分模块设计与开发 所谓分模块设计&#xff0c;顾名思义指的就是我们在设计一个 Java 项目的时候&#xff0c;将一个 Java 项目拆分成多 个模块进行开发。 分模块设计我们在进行项目设计阶段&#xff0c;就可以将一个大的项目拆分成若干…...

计算机组成原理(九):乘法器

乘法器原理 乘法器的工作原理可以用二进制乘法来说明。二进制乘法和十进制乘法类似&#xff0c;通过部分积的累加得到结果。 部分积的生成 在二进制乘法中&#xff0c;每一位的乘积是两个二进制数位的 与运算&#xff08;0 0 0&#xff0c;1 0 0&#xff0c;0 1 0&…...

python【输入和输出】

Python 有三种输出值的方式&#xff1a; 表达式语句print() 函数使用文件对象的 write() 方法&#xff0c;标准输出文件可以用 sys.stdout 引用。 ① 将输出的值转成字符串&#xff0c;可以使用 repr() 或 str() 函数来实现&#xff1a; str()&#xff1a; 函数返回一个用户易…...

江苏九天建设有限公司网站/什么是广告营销

项目需求&#xff1a;公司目前有几十个项目&#xff0c;每个项目都独立使用一个lib&#xff0c;太占空间。网上查了一些资料可以多个项目共享jar包&#xff0c;这样就解决了项目包臃肿的问题。lib目录自定义即可;tomcat需要修改catalina.properties配置文件&#xff1a;1.share…...

自己给公司做网站该怎么做/上海推广网络营销咨询热线

解决办法&#xff1a; 在应用程序类&#xff08;App类&#xff09;中的InitInstance函数体内添加以下语句&#xff1a; AfxInitRichEdit(); 对应1.0版本 如果有2.0版本需要添加如下 AfxInitRichEdit2(); 对应2.0 版本 说明&#xff1a; 添加RichEdit控件后&#xff0c;…...

网站建设定制网站建设公司哪家好/拼多多seo怎么优化

在我的世界新人必备指令/ping 输完后出现Ping!时间的间隔就是你和服务器的/register 密码 #注册账号/login 密码 #登陆账号/money #查看金钱/sethome #设置自己的家/home #回到自己设置的家/spawn #传送到出生点/back #回到上一次传送点(例如死后回尸体处)/getpos #显示坐标/se…...

工业产品外观设计公司/如何做网站优化

在无源晶体的设计中&#xff0c;经常遇到负载电容CL的大小取值、晶振设计与精度的提高、KHz无源晶振的停止、音叉晶体谐振器的精度漂移以及精度和无源晶振在高温下的精度是否等于低温的精度烦忧的问题等。 无源晶体振荡器&#xff08;包括KHz和MHz&#xff09;是否能够直接参考…...

榆林免费做网站/电商运营自学全套教程

程序组装代码存在吗? 每个程序是代码组成的,固定的程序可能是固定的代码,当其组装完成后,就可以执行这段程序. 怪不得代码搬运工这样的字眼会存在,那编程的意义何在? 字母A联合字母B形成了程序AB,但A与B已经是存在的A与B.既然已经存在,并且可按规律或规则规范去组织进行使用.…...

做爰全过程免费狐狸网站/广州百度关键词搜索

一、 在字符串前加一个L作用: unicode字符集是两个字节组成的。L告示编译器使用两个字节的 unicode 字符集。 如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串&#xff0c;就是每个字符占用两个字节。 strlen(“asd”) 3; strlen(L"asd") 6; …...