traj_dist 笔记 源代码解析(python部分)

1distance.py

1.1 METRIC_DIC

不同实现方法对应的函数路径

1.2 sspd

功能:

  • 计算轨迹 traj_1traj_2 之间的对称化段路径距离。

参数:

  • traj_1:一个二维 numpy 数组,代表第一个轨迹。
  • traj_2:一个二维 numpy 数组,代表第二个轨迹。
  • type_d:字符串,指定距离的类型("euclidean" 或 "geographical")。
    • "euclidean" 表示使用欧几里得距离,适用于任何维度的轨迹。
    • "geographical" 表示使用地理距离,假设轨迹是二维的,第一维是经度,第二维是纬度。
  • implementation:字符串,指定实现方式("python"、"cython" 或 "auto")。
    • 如果轨迹是二维的,默认使用 Cython 实现;否则使用 Python 实现,除非明确指定为 "python"。

返回值:

  • 返回一个浮点数,表示两个轨迹之间的对称化段路径距离。

1.3  sowd_grid

两个轨迹之间的对称化单向距离(Symmetrized One-Way Distance)

大体逻辑和1.2 相同,这边多了两个内容

  • converted:布尔值,如果为 True,则表示轨迹已经转换为网格表示形式
  • precision:Geohash 精度,用于地理坐标的转换。
  • 'sowd_grid' 计算网格表示中轨迹之间的距离。
    • 如果坐标是地理的,可以根据 geohash 编码进行转换。如果是这样,需要 geohash 的“精度”。
    • 否则,轨迹被认为是以单元格表示编码的。

1.4 frechet

1.5 discret_frechet

1.6 hausdorff

1.7 dtw

逻辑和sspd一样(1.2节),略过

1.8 lcss

1.9 edr

逻辑和sspd一样(1.2节),只是多了一个eps(阈值),略过

1.10 erp

逻辑和sspd一样(1.2节),只是多了一个g(比较基准点),略过

1.11 pdist

用于计算轨迹列表(traj_list)中每对轨迹之间的成对距离

1.12 cdist 

用于计算两个轨迹列表(traj_list_1traj_list_2)中每对轨迹之间的距离

实现逻辑和pdist几乎一模一样,唯一的区别就是一个返回的是一维向量,一个是二维数组

2 pdist/basic_euclidean.py 欧氏距离轨迹相关基本操作

2.1 eucl_dist(x,y) 两个坐标点的差的二范数

简单的两个坐标点的差的二范数

2.2 point_to_seg 点到线段的距离

2.3 point_to_trajectory  一个点与一条轨迹的最短距离

2.4  circle_line_intersection 圆和线段的交点

 2.4.1 二次方程的推导

2.4.2  推导坐标

3 basic_geographical.py  地理空间相关的操作

3.1 great_circle_distance 两个经纬度的大圆距离

3.2 initial_bearing 一个点到另一个点的初始方位角 

3.3 cross_track_distance  点到大圆路径的距离

3.4 along_track_distance  从轨迹上点到不在轨迹上点的沿轨迹距离

3.5 point_to_path  一个点  到一条由两点 和  定义的路径的点到路径距离

4 pdist/sspd.py 一条轨迹上的点到零一条轨迹的距离

4.1 e_spd 轨迹 t1 上的所有点到轨迹 t2 的   点到轨迹的距离 

4.2 e_sspd 两个轨迹之间相互的 spd-距离的平均值

4.3   g_spd 轨迹 t1 上所有点到轨迹 t2 的  平均点到路径距离(?)

这里代码的注释是轨迹 t1 上所有点到轨迹 t2 的  平均点到路径距离,我觉得应该是t2到t1?

4.4 g_sspd 两个轨迹之间相互的 spd-距离的和

注:和欧几里得的版本不同,几何空间版本是求和,而不是取平均

5 pdist/lcss.py 最长公共子序列

5.1 e_lcss

大体上和文巾解题1143. 最长公共子序列-CSDN博客是一样的,仅有一点点区别

5.2 g_lcss

基本上都是一样的,把计算欧几里得距离换成了计算大圆距离 

6 pdist/hausdorff.py 豪斯多夫距离

6.1 e_directed_hausdorff t1到t2的豪斯多夫距离

 6.2 e_hausdorff 双向豪斯多夫

t1到t2和t2到t1的单向豪斯多夫距离中较大的那个

6.3 g_directed_hausdorff

6.4 g_hausdorff

和欧氏距离的唯一区别是,point_to_trajectory改成了point_to_path

7  pdist/erp.py

地理坐标类的就是将欧氏距离改成大圆距离

8 pdist/edr.py

8 pdist/dtw.py

 

7数学笔记/scipy 笔记:豪斯多夫距离(Hausdorff )_python 豪斯多夫距离-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FreeRTOS的三处栈空间设置分析

1、汇编启动代码中设置栈 这个栈空间只有300字节,是用于汇编启动代码早期,以及调用C语言的main函数(创建任务等)在创建好任务,启动调取器后,这个栈空间就被抛弃掉,后续不会使用到等调度器开启后…

星际飞船大战

欢迎来到程序小院 星际飞船大战 玩法:滑动鼠标控制方向,点击鼠标左键射击,生命值100分,被敌船击中减去20, 5次生命复活机会,统计分数,快去星际飞船大战吧^^。开始游戏https://www.ormcc.com/pl…

Dijkstra求最短路 II(堆优化Dijkstra算法)

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。 请你求出 11 号点到 n 号点的最短距离,如果无法从 11 号点走到 n 号点,则输出 −1−1。 输入格式 第一行包含整数 n 和 m。 接下来 m 行每行包含…

鱼骨探矿的题解

原题描述: 题目描述: 众所周知,《我的世界》中一种非常流行的探矿方式就是鱼骨探矿。 我的世界的地图可以看作一个的正方形世界。 经过初步探测,在第 i 行,[li, ri] 区间内可能存在宝藏。为了探索效率,…

C# | 对比不同种类的锁

文章目录 C# 对比不同种类的锁异同点对比表使用方法lock语句Monitor类Mutex类Semaphore类ReaderWriterLock类 结语 C# 对比不同种类的锁 Hi,在C#编程中,想要保护共享资源,通常会用到各种类型的锁。今天我们就来一起看看C#中不同种类的锁&…

geolife 笔记:将所有轨迹放入一个DataFrame

单条轨迹的处理:geolife笔记:整理处理单条轨迹-CSDN博客 1 加载数据 import pandas as pd import numpy as np import datetime as dt import osdata_dir Geolife Trajectories 1.3/Data/ 1.1 列出所有文件夹 dirlist os.listdir(data_dir) dirlist…

基于Qt开发的闹钟

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);speecher new QTextToSpeech(this); }Widget::~Widget() {delete ui; }//定时器超时时,自动执行的…

Ubuntu22.04中用户的全名

概要: 用户的全名有别于用户名username username可以理解为账户名,或者说用户ID,用于确定身份,显然是必需的 用户全名则不是必需的,用户全名也叫做注释,是一种辅助信息,如果没有填写用户全名…

docker 资源控制

Docker的资源控制 对容器使用宿主机的资源进行限制,如cpu,内存,磁盘I/O Docker使用linux自带的功能cgroup(control grouos)是linux内核系统提供的一种可以限制,记录,隔离进程组使用的物理资源 Docker借助这个机制&…

MySQL执行流程_执行一条select语句,期间发生了什么

文章目录 执行一条select语句,期间发生了什么MySQL执行流程第一步:连接器第二步:查询缓存第三步:解析SQL第四步:执行SQL 执行一条select语句,期间发生了什么 MySQL执行流程 server层负责建立连接、分析和执…

Banana Pi BPI-R4 SBC/路由器推出,带双 10G SFP+ 端口+Wifi7支持

Banana Pi BPI-R4 wifi7路由器开发板 香蕉派 Banana Pi BPI-R4 根据著名Banana Pi品牌背后的公司Sinovoip提供的初步信息,他们即将推出的Banana Pi BPI-R4路由器板目前已经正式发售。与之前的 Banana Pi R3 板相比,这在规格上将有显着提升。这就是我们…

99基于matlab的小波分解和小波能量熵函数

基于matlab的小波分解和小波能量熵函数,通过GUI界面导入西储大学轴承故障数据,以可视化的图对结果进行展现。数据可更换自己的,程序已调通,可直接运行。 99小波分解和小波能量熵函数 (xiaohongshu.com)https://www.xiaohongshu.co…

【离散数学】——期末刷题题库( 二元关系)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

eclipse的日志文件放在什么位置

eclipse的日志文件放在<workspace的目录>/.metadata目录下面&#xff0c;例如&#xff1a;

Java基础语法之访问修饰限定符

private 表示私有的&#xff0c;只能在同一个包中的同一个类使用 像这样就是在同一个包中的不同类用了private修饰的变量&#xff0c;这是非法的&#xff0c;那到底该如何给a赋值呢&#xff1f;可以在定义时就赋值&#xff0c;但这样的代码就没有可操作性&#xff0c;所以我们…

Nginx的location匹配和rewrite重写

一、location匹配 常用的正则表达式 ^ &#xff1a;匹配输入字符串的起始位置 $ &#xff1a;匹配输入字符串的结束位置 * &#xff1a;匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”&#xff1a;匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll…

java--HashMap、LinkedHashMap、TreeMap底层原理

1.HashMap集合的底层原理 ①HashMap跟HashSet的底层原理是一模一样的&#xff0c;都是基于哈希表实现的。 ②实际上&#xff1a;原来学的Set系列集合的底层原理就是基于Map实现的&#xff0c;只是Set集合中的元素只要键数据&#xff0c;不要值数据而已。 2.哈希表 ①JDK8之前…

原创度检测,在线文章原创度检测

原创度检测&#xff0c;作为数字时代中内容创作者和学术界广泛关注的话题&#xff0c;正逐渐成为保障知识产权、促进创新发展的不可或缺的工具。今天&#xff0c;我们将深入介绍原创度检测的定义、意义、技术原理、应用领域以及未来趋势。 一、什么是原创度检测&#xff1f; 原…

社区分享|宋月冉:大数据下的联邦学习隐私安全问题

“隐语”是开源的可信隐私计算框架&#xff0c;内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择&#xff0c;提供丰富的联邦学习算法和差分隐私机制 开源项目 github.com/secretflow gitee.com/secretflow 本文根据隐语开源社区 Contributor 西安电子科技大学网络与信息…

Gemini与GPT-4的巅峰对决:AI界的双壁之战

随着人工智能技术的飞速发展&#xff0c;AI领域的竞争越来越激烈。在这个充满挑战与机遇的时代&#xff0c;两个备受瞩目的AI巨头——Gemini Pro和GPT-4&#xff0c;成为了人们关注的焦点。这两者都以其强大的功能和卓越的性能&#xff0c;引领着AI领域的发展潮流。本文将详细介…