Matlab之提高交叉定位点的定位精度

news2024/11/26 7:50:09

通过测向交叉定位的方法,按理只需2根测向线即可得出定位点的位置。但由于误差的存在,求出的定位点位置存在一定的偏差。为了得到更加精确的定位点位置,需要对定位点进行冗余测量,从而得到多个定位点,然后通过定位点估计算法得到更加接近真实定位点的位置。

一、基于DBSCAN密度聚类滤除异常定位点

输入参数:

TargetPoint:测量定位点的集合,单位km;

epsilon:ε邻域的半径,单位km;

minPts:最小点数,用于判为同一类的最少点数量;

输出参数:

idx:TargetPoint数组中,属于同一类的索引标志。值为1说明是同一类。

TargetPoint_Cluster:筛选后属于同一类的定位点集合。

%% 对定位点进行聚类,DBSCAN密度聚类
% 定义参数
epsilon = 15;   % ε邻域的半径,单位与定位点的坐标单位相同
minPts = 20;      % 最小点数,判为同一类的最小点数量

% 进行DBSCAN聚类
idx= DBSCAN(TargetPoint,epsilon,minPts);%TargetPoint为需要进行聚类筛选的所有定位点位置坐标,idx为同一类标志
TargetPoint_Cluster=TargetPoint((idx~=0),:);%筛选聚类后的结果

% 可视化聚类结果
figure(6)
plot(TargetPoint_Cluster(:,2),TargetPoint_Cluster(:,1),'ro');
title('DBSCAN 聚类结果');
xlabel('横坐标/km');
ylabel('纵坐标/km');

1.1 DBSCAN密度聚类算法Matlab程序

输入参数:

X:测量定位点的集合,单位km;

epsilon:ε邻域的半径,单位km;

minPts:最小点数,用于判为同一类的最少点数量;

输出参数:

idx:X数组中,属于同一类的索引标志。值为1说明是同一类。

isnoise:X数组中,属于噪声点的索引标志。值为1说明是噪声类。


function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)    % DBSCAN聚类函数
 
    C=0;                       % 统计簇类个数,初始化为0
    
    n=size(X,1);               % 把矩阵X的行数数赋值给n,即一共有n个点
    IDX=zeros(n,1);            % 定义一个n行1列的矩阵
    
    D=pdist2(X,X);             % 计算(X,X)的行的距离
    
    visited=false(n,1);        % 创建一维的标记数组,全部初始化为false,代表还未被访问
    isnoise=false(n,1);        % 创建一维的异常点数组,全部初始化为false,代表该点不是异常点
    
    for i=1:n                  % 遍历1~n个所有的点
        if ~visited(i)         % 未被访问,则执行下列代码
            visited(i)=true;   % 标记为true,已经访问
            
            Neighbors=RegionQuery(i);     % 查询周围点中距离小于等于epsilon的个数
            if numel(Neighbors)<MinPts    % 如果小于MinPts
                % X(i,:) is NOISE        
                isnoise(i)=true;          % 该点是异常点
            else              % 如果大于MinPts,且距离大于epsilon
                C=C+1;        % 该点又是新的簇类中心点,簇类个数+1
                ExpandCluster(i,Neighbors,C);    % 如果是新的簇类中心,执行下面的函数
            end
            
        end
    
    end                    % 循环完n个点,跳出循环
    
    function ExpandCluster(i,Neighbors,C)    % 判断该点周围的点是否直接密度可达
        IDX(i)=C;                            % 将第i个C簇类记录到IDX(i)中
        
        k = 1;                             
        while true                           % 一直循环
            j = Neighbors(k);                % 找到距离小于epsilon的第一个直接密度可达点
            
            if ~visited(j)                   % 如果没有被访问
                visited(j)=true;             % 标记为已访问
                Neighbors2=RegionQuery(j);   % 查询周围点中距离小于epsilon的个数
                if numel(Neighbors2)>=MinPts % 如果周围点的个数大于等于Minpts,代表该点直接密度可达
                    Neighbors=[Neighbors Neighbors2];   %#ok  % 将该点包含着同一个簇类当中
                end
            end                              % 退出循环
            if IDX(j)==0                     % 如果还没形成任何簇类
                IDX(j)=C;                    % 将第j个簇类记录到IDX(j)中
            end                              % 退出循坏
            
            k = k + 1;                       % k+1,继续遍历下一个直接密度可达的点
            if k > numel(Neighbors)          % 如果已经遍历完所有直接密度可达的点,则退出循环
                break;
            end
        end
    end                                      % 退出循环
    
    function Neighbors=RegionQuery(i)        % 该函数用来查询周围点中距离小于等于epsilon的个数
        Neighbors=find(D(i,:)<=epsilon);
    end
 
end

1.2 效果展示

二、最小二乘法求定位点估计值

2.1 算法原理

第一步:由测向原理出发,化简为矩阵形式

测向线从测量节点指向目标定位点,如图所示,则由直角坐标系下直线的倾斜角定义可得:

                                                         

将其化简为AX=B的矩阵形式,如下:

其中,A、X和B矩阵如下所示:

第二步:引入误差项并用最小二乘法求解

由于测向存在误差,因此代入各测量节点坐标和测向值时,上式不能成立。由此引入误差矩阵E(矩阵维度:与矩阵B相同),则上面的矩阵表达式更正为:

最小二乘法原理:认为该误差的平方和最小时的定位点,为最佳的定位点估计。

该误差的平方和为误差矩阵E的二范数的平方,则

为求得误差平方和的最小值,对其求导数,导数为0时的X即为最佳的定位点估计。

则导数为0时的X为:

 

矩阵求导的部分运算法则如下: 

  

矩阵转置运算法则如下: 

2.2 最小二乘法Matlab代码

输入参数:

AOA:测向线对应的地理正北方位,单位度;

R:测量节点的坐标,单位自定;

输出参数:

LocFinalPoint:估计的定位点位置坐标,单位与R保持一致。

%% 最小二乘法求最终定位点
for i=1:size(AOA,2)
    A(i,:)=[-tand(Azimuth2ElevationAngle(AOA(i))),1];%倾斜角
    B(i)=R(i,2)-tand(Azimuth2ElevationAngle(AOA(i)))*R(i,1);
end

LocFinalPoint=inv(A'*A)*(A'*B');%最小二乘计算结果

2.3 效果展示

真实坐标点位置:(100,300)

三、利用一元3次方程拟合时间-角度曲线

输入参数:

AOA:测向线对应的地理正北方位,单位度;

输出参数:

yfit:一元3次方程拟合后,对应的地理正北方位,单位度;

%% 三次方程拟合时间-角度曲线后,利用最小二乘法求最终定位点
% 使用polyfit进行线性拟合,1是线性拟合的参数
p = polyfit(1:60,Azimuth2ElevationAngle(AOA), 3);

% 使用polyval计算拟合值
yfit = polyval(p, 1:60);

3.1 效果展示

从下图看出,拟合后的时间-角度曲线更加靠近真实定位点对应的时间-角度曲线,使用拟合后的时间-角度曲线,利用最小二乘法估计的定位点坐标更加接近真实定位点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1557329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ssm007亚盛汽车配件销售业绩管理统+jsp

亚盛汽车配件销售业绩管理系统设计与实现 摘 要 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;因此传统管理方式就不适合。为了让亚盛汽车配件销售信息的管理模式进行升级&#xff0c;也为了更好的维护亚盛汽车配件销售信息&am…

【Linux系统】信号量实现同步和互斥

一.回顾 在这之前已经讲解了System V版本的信号量&#xff0c;主要内容为以下3点&#xff1a; 信号量本质是一把计数器申请信号量本质就是预订资源PV操作(申请和释放)是原子的 今天我们要学习的是POSIX版本的信号量&#xff0c;以上三点同样遵循 二.信号量VS互斥锁 1.联系&…

统信 UOS V20 一键安装 Oracle 12CR2(220118)单机版

Oracle 一键安装脚本&#xff0c;演示 统信 UOS V20 一键安装 Oracle 12CR2&#xff08;220118&#xff09;单机版过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;…

【MySQL】事务是什么?事务的特性又是什么?

文章目录 ✍事务是什么&#xff1f;✍事务的特性&#xff08;四个&#xff09;✍事务并发时出现的问题✍事务的隔离性 ✍事务是什么&#xff1f; 事务是由一个或多个SQL语句构成的&#xff0c;在事务中&#xff0c;这些的SQL不可分割&#xff0c;是一个整体&#xff0c;整个事…

阿里云短信服务免费100条

阿里云短信服务免费100条申请入口 aliyunbaike.com/go/sms 最新阿里云短信优惠&#xff0c;2元可以购买200条短信&#xff0c;如下图&#xff1a; 阿里云短信服务免费100条 另外&#xff0c;阿里云短信服务免费100条是指买2000条短信可以赠送100条&#xff0c;买5000条赠300条&…

算法学习——LeetCode力扣图论篇1

算法学习——LeetCode力扣图论篇1 797. 所有可能的路径 797. 所有可能的路径 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特…

RPC(Remote Procedure Call)远程过程调用

定义 RPC&#xff08;Remote Procedure Call&#xff09;即远程过程调用&#xff0c;是一种计算机通信协议&#xff0c;它允许程序在不同的计算机之间进行通信和交互&#xff0c;就像本地调用一样。 为什么需要 RPC&#xff1f; 回到 RPC 的概念&#xff0c;RPC 允许一个程序…

Pytorch最全详细安装指南

一. 安装Anaconda 敬请期待。。。 二. 安装Pytorch 1 打开Anaconda prompt&#xff0c;创建pytorch环境 输入 conda create -n pytorch python3.7 运行结束&#xff0c;若出现proceed 输入y 运行结束&#xff0c;创建pytorch环境成功 2 安装pytorch 输入nvidia-smi 查…

Weblogic10.3.6补丁升级

由oracle官方发布的漏洞公告&#xff0c;对weblogic进行补丁升级。本文介绍的是weblogic安装的版本为10.3.6.0&#xff0c;如果你使用的是其他版本的请根据实际版本来选择下载 对于weblogic补丁升级&#xff0c;具体步骤如下&#xff1a; 1、首先需要下载weblogic补丁程序 2…

(day 24)JavaScript学习笔记(异常的处理)

概述 这是我的学习笔记&#xff0c;记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript&#xff0c;那么这一系列的学习笔记可能会对你有所帮助。 今天学习异常的处理&#xff0c;主要是捕获异常、throw关键字主动抛异常…

【C++中的STL(未完成)】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

SQLServer sys.default_constraints介绍

sys.default_constraints 是 SQL Server 的系统视图&#xff0c;它包含了数据库中所有默认约束的信息。默认约束是数据库对象&#xff08;如表中的列&#xff09;的约束&#xff0c;它为列定义了一个默认值&#xff0c;当在插入新行时没有为该列提供值时&#xff0c;将使用这个…

HarmonyOS实战开发-如何实现一个支持加减乘除混合运算的计算器。

介绍 本篇Codelab基于基础组件、容器组件&#xff0c;实现一个支持加减乘除混合运算的计算器。 说明&#xff1a; 由于数字都是双精度浮点数&#xff0c;在计算机中是二进制存储数据的&#xff0c;因此小数和非安全整数&#xff08;超过整数的安全范围[-Math.pow(2, 53)&#…

【一】DDR3基础知识与IMG IP

【一】DDR3基础知识与IMG IP 一、DDR3的基本知识 1、DDR3全称为第三代双倍速率同步动态随机存储器 特点&#xff1a;掉电无法保存数据&#xff0c;需要周期性的刷新&#xff1b;时钟上升沿和下降沿都在传输数据&#xff1b;突发传输&#xff0c;突发长度burtst length一般为…

AcWing 1413. 矩形牛棚(每日一题)

原题链接&#xff1a;1413. 矩形牛棚 - AcWing题库 作为一个资本家&#xff0c;农夫约翰希望通过购买更多的奶牛来扩大他的牛奶业务。 因此&#xff0c;他需要找地方建立一个新的牛棚。 约翰购买了一大块土地&#xff0c;这个土地可以看作是一个 R 行&#xff08;编号 1∼R&…

45.跳跃游戏||

// 定义一个名为Solution的类 class Solution {// 定义一个public方法jump&#xff0c;输入参数为一个整数数组nums&#xff0c;返回值类型为整数public int jump(int[] nums) {// 初始化跳跃次数结果变量为0int result 0;// 初始化当前覆盖的最远距离下标为0int end 0;// 初…

RVM安装ruby笔记

环境 硬件&#xff1a;Macbook Pro 系统&#xff1a;macOS 14.1 安装公钥 通过gpg安装公钥失败&#xff0c;报错如下&#xff1a; 换了几个公钥地址&#xff08;hkp://subkeys.pgp.net&#xff0c;hkp://keys.gnupg.net&#xff0c;hkp://pgp.mit.edu&#xff09;&#xff0c;…

某东推荐的十大3C热榜第一名!2024随身wifi靠谱品牌推荐!2024随身wifi怎么选?

一、鼠标金榜&#xff1a;戴尔 商务办公有线鼠标 售价:19.9&#xffe5; 50万人好评 二、平板电脑金榜&#xff1a;Apple iPod 10.2英寸 售价:2939&#xffe5; 200万人好评 三、随身WiFi金榜&#xff1a;格行随身WiFi 售价:69&#xffe5; 15万人好评 四、游戏本金榜&#xff…

python爬虫-----输入输出与流程控制语句(第四天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

车辆充电桩管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 1. 前台功能…