python中多条线的最近交点

2023-11-26

我需要一个好的算法来计算最接近 python 中的线集合的点,最好使用最小二乘法。我发现这篇关于 python 实现的文章不起作用:

在Python中使用最小二乘法找到多条线的中心

我在 Matlab 中发现了这个资源,每个人似乎都喜欢......但我不知道如何将它转换为 python:

https://www.mathworks.com/matlabcentral/fileexchange/37192-intersection-point-of-lines-in-3d-space

我很难相信有人还没有这样做过......这肯定是 numpy 或标准包的一部分,对吗?我可能只是没有寻找正确的术语 - 但我还没有找到它。我可以用两个点或一个点和一个方向来定义线。任何帮助将不胜感激!

这是我正在处理的一组点的示例:

第一组线的初始 XYZ 点

array([[-7.07107037,  7.07106748,  1. ],
       [-7.34818339,  6.78264559,  1. ],
       [-7.61352972,  6.48335745,  1. ],
       [-7.8667115 ,  6.17372055,  1. ],
       [-8.1072994 ,  5.85420065,  1. ]])

属于第一组线的角度

[-44.504854, -42.029223, -41.278573, -37.145774, -34.097022]

第二组线的初始 XYZ 点

array([[ 0., -20. ,  1. ],
       [ 7.99789129e-01, -19.9839984,  1. ],
       [ 1.59830153e+00, -19.9360366,  1. ],
       [ 2.39423914e+00, -19.8561769,  1. ],
       [ 3.18637019e+00, -19.7445510,  1. ]])

属于第二组线的角度

[89.13244, 92.39087, 94.86425, 98.91849, 99.83488]

解决方案应该是原点或非常接近原点(数据有点嘈杂,这就是为什么线不能在单个点完美相交的原因)。


这是使用中描述的方法的 numpy 解决方案这个链接

def intersect(P0,P1):
    """P0 and P1 are NxD arrays defining N lines.
    D is the dimension of the space. This function 
    returns the least squares intersection of the N
    lines from the system given by eq. 13 in 
    http://cal.cs.illinois.edu/~johannes/research/LS_line_intersect.pdf.
    """
    # generate all line direction vectors 
    n = (P1-P0)/np.linalg.norm(P1-P0,axis=1)[:,np.newaxis] # normalized

    # generate the array of all projectors 
    projs = np.eye(n.shape[1]) - n[:,:,np.newaxis]*n[:,np.newaxis]  # I - n*n.T
    # see fig. 1 

    # generate R matrix and q vector
    R = projs.sum(axis=0)
    q = (projs @ P0[:,:,np.newaxis]).sum(axis=0)

    # solve the least squares problem for the 
    # intersection point p: Rp = q
    p = np.linalg.lstsq(R,q,rcond=None)[0]

    return p

Works

enter image description here

编辑:这是一个用于嘈杂测试数据的生成器

n = 6
P0 = np.stack((np.array([5,5])+3*np.random.random(size=2) for i in range(n)))
a = np.linspace(0,2*np.pi,n)+np.random.random(size=n)*np.pi/5.0
P1 = np.array([5+5*np.sin(a),5+5*np.cos(a)]).T
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中多条线的最近交点 的相关文章

  • async for 的语义等价物

    从相对于的文档async for根据 Python 3 5 中的语法 我发现引入它是为了迭代可等待的迭代器 不过 在描述之后的语义等价物中 我没有得到一些东西 iter ITER iter type iter aiter iter runn
  • pycharm自动将制表符转换为空格

    我正在使用 pycharm IDE 进行 python 开发 它对于 django 代码来说工作得很好 因此怀疑将制表符转换为空格是默认行为 但是在 python IDE 中到处都会出现错误 因为它无法自动将制表符转换为空格 有没有办法实现
  • R 中的 Python 链接式数据整理

    我是 Python 新手 来自 R 环境 我喜欢 R 的一件事是能够编写代码 在一个可读的代码块中对数据进行多种转换 但对我来说 在 Python 中找到这种风格的代码非常困难 我想知道你们中的一些人是否可以指导在哪里可以找到有关该特定风格
  • Django 3.1:带有异步生成器的 StreamingHttpResponse

    Django 3 1 文档 https docs djangoproject com en 3 1 topics async async views 7E text The 20main 20benefits 20are 20the 20a
  • Python 元组列表到 int 列表

    所以我有x 12 1 3 元组列表 我想要x 12 1 3 整数列表 以最好的方式可能 你能帮忙吗 你没有说 最好 是什么意思 但大概你的意思是 最Pythonic 或 最易读 或类似的东西 F3AR3DLEGEND 给出的列表理解可能是最
  • Python,针对频繁模式的网络日志数据挖掘

    我需要开发一个用于网络日志数据挖掘的工具 由于在特定用户会话中请求了许多 url 序列 从 Web 应用程序日志中检索 我需要找出网站用户的使用模式和组 集群 我是数据挖掘的新手 现在经常检查谷歌 发现一些有用的信息 即查询似乎指向几乎完全
  • Python 文件打开并立即关闭

    尝试首先通过 powershell 然后通过 cmd 运行此代码 甚至简单地单击它 我正在输入 start python myfile py 来运行它 在每种情况下 文件都会在屏幕上闪烁并立即关闭 我查看它的唯一方法是将文件直接拖到cmd中
  • 在 scipy 中按稀疏矩阵分组并返回一个矩阵

    关于使用 SO 处理有几个问题groupby与稀疏矩阵 然而输出似乎是列表 字典 https stackoverflow com questions 35410839 group by on scipy sparse matrix 数据框
  • 以编程方式使用的免费单词列表? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 ctypes 的 python 枚举模块

    之前enum模块已存在 c int或相关类型经常被用作替代枚举 但这没有也没有检查类型 现在 python 有一个enum模块 有没有办法直接使用它ctypes 是的 我们可以轻松创建自己的 CEnum 类 这要归功于 ctypes 允许我
  • 如何在条形图上添加值标签

    我正在创建一个条形图 但我不知道如何在条形图上添加值标签 在条形图的中心或正上方 我相信解决方案是使用 文本 或 注释 但我 a 不知道该使用哪一个 一般来说 还没有弄清楚何时使用哪一个 b 无法看到任何一个来呈现值标签 这是我的代码 im
  • python中带括号和不带括号调用函数有什么区别? [复制]

    这个问题在这里已经有答案了 我有个问题 假设我们有函数 hello 带括号和不带括号调用有什么区别 当我调用 hello 时 它引用的是一个值等于此函数的对象 或者也许我错了 当我不带括号调用它时会发生什么 我想知道为什么 def hell
  • 使用 scipy 在 python 中读取 MatLab 文件

    我正在使用 python 和 scipy 包来读取 MatLab 文件 然而 它需要太长时间并且崩溃 The Dataset http realitycommons media mit edu RealityMining zip大小约为50
  • 设置ntlk代理

    我正在关注第一章NLTK书 http www nltk org book ch01 html frequency distributions 它要求我们通过运行来安装图书语料库nltk dowwnload 我正进入 状态getattrinf
  • 在Python中根据等级和花色对一手牌进行排序

    我正打算制作一款纸牌游戏 目前我正在着手开发它 我感到困惑的是 按牌的等级对手中的牌进行排序 然后按花色排序 以及如何减少重复 目前 我可能可以创建一个 for 循环来组织卡片 然后为每种可能性设置 52 个不同的 if 但我想知道它们是否
  • f2py:公开“已使用”模块的参数

    我认为这个问题已经在某个地方得到解决 但我花了大量的时间四处寻找答案 包括深入研究源代码 我试图将问题放在第一段中 其余部分显示了问题的基本示例 我正在尝试编译一个包含USE指向另一个更通用的模块的语句 我更愿意将使用的模块分开 以便它可以
  • 为什么我不能将 addstr() 添加到 pythoncurses 窗口中的最后一行/列?

    使用Python 我尝试使用addstr 将光标位置写入curses 窗口的右下角 但出现错误 ScreenH 2工作正常 但打印在窗口底部的第二行 ScreenH 1根本不起作用 我究竟做错了什么 import curses Screen
  • Scrapy在使用crawlerprocess运行时抛出错误

    我用 python 编写了一个脚本 使用 scrapy 来收集网站上不同帖子的名称及其链接 当我从命令行执行脚本时 它可以完美地工作 现在 我的意图是使用运行脚本CrawlerProcess 我在不同的地方寻找类似的问题 但我找不到任何直接
  • 多处理冻结计算机

    我通过使用多处理提高了执行时间 但我不确定 PC 的行为是否正确 它会冻结系统 直到所有进程完成 我使用的是 Windows 7 和 Python 2 7 也许我做错了 这就是我所做的 def do big calculation sub
  • 在Python中使用argparse解析整个JSON

    我正在尝试使用 ARGPARSE 库在一个简单的参数中解析整个 Json 问题是当它遇到儿子内部的不同元素 例如 和 时 它会突然停止 这是测试代码 parse py import argparse parser argparse Argu

随机推荐

  • 如何找到OTP流程的主管?

    是否有函数允许 OTP 进程找到其主管的 pid 数据隐藏在进程字典中 任何使用以下命令生成的进程的字典中 proc lib 在条目下 ancestors 1 gt proc lib spawn fun gt timer sleep inf
  • onClick 事件在表单标签内不起作用

  • C 可以使用多种浮点格式进行计算吗?

    C 2011 N1570 5 2 4 2 2 9 说 除了赋值和强制类型转换之外 具有浮点操作数的运算符产生的值 经过通常算术转换的值以及浮点常量的计算格式的范围和精度可能大于类型所需的范围和精度 意思是不是all实现中的浮点运算可以用以下
  • 如何使用 setFieldValue 并将值作为组件之间的 props 传递

    我试图在示例注册表单中使用 ant design 表单 当我尝试使用 setFieldsValue 时 它 会抛出错误 除非使用 getFieldDecorator 否则无法使用 setFieldsValue 但我已经在代码中使用了 get
  • 如何将阴影背景白色更改为其他颜色

    我正在努力改变UIPageViewController做翻转动画时的阴影颜色 但它始终只显示白色 如何将反面背景颜色白色更改为其他颜色 例如黑色或棕褐色 iBook 也在做同样的事情 我提到下面的图片有白色背景 我想改变它的颜色 Scree
  • 纯javascript可拖动元素

    我知道网上有这样做的示例 但每个示例都不同 我自己的实现也是如此 我试图找出我的实现出了什么问题 因为它没有按预期工作 代码片段 var mousePressX 1 var mousePressY 1 document getElement
  • 在新的 Rails 项目中从 SQLite 更改为 PostgreSQL

    我有一个 Rails 应用程序 其数据库位于 SQLite 开发和生产 中 由于我要迁移到 heroku 因此我想将数据库转换为 PostgreSQL 无论如何 我听说本地开发数据库不需要从 SQLite 更改 所以我不需要更改它 但是 如
  • 是否可以从 Java 运行 C 源代码?

    现在我有一些 C 源代码 我想在我的 java 应用程序中使用它 我需要执行 C 源代码 并将结果返回到我的 java 应用程序 如何在我的 java 应用程序中重用 C 源代码 而不是将所有 C 源代码重新编写为 java 看一眼Java
  • Math.abs 返回 Integer.Min_VALUE 的错误值

    这段代码 System out println Math abs Integer MIN VALUE Returns 2147483648 是否应该返回绝对值2147483648 Integer MIN VALUE is 214748364
  • 如何更改 JavaFX 中子级的顺序

    是否可以更改 JavaFX2 子列表中节点的顺序 我试过set and Collections swap 然而两者都抛出IllegalArgumentException in Parent因为在某些时候 子列表在两个位置包含相同的项目 当节
  • Numpy 中的矩阵索引

    在开发涉及矩阵运算的小型 Python 脚本时 我越来越感到困惑 因此我启动了一个 shell 来玩一个玩具示例 并更好地理解 Numpy 中的矩阵索引 这就是我所做的 gt gt gt import numpy as np gt gt g
  • iPhone 事件套件:以编程方式创建 EKCalendar?

    我想在我的应用程序中插入事件 以便可以在 iPhone Calendar app 中查看它们 但由于我不想将用户事件与应用程序中的事件混合在一起 所以我想创建一个像 MyApp Events 这样的 EKCalendar 这可能吗 否则您将
  • 通过单个 API 调用获取包含见解的帖子 - Facebook Graph API

    我想知道是否有一种方法可以通过一次 API 调用获取最近 10 篇帖子及其一些见解 反应 影响力 观点等 目前我正在做的是获取最近 10 篇帖子并循环浏览他们的 ID 以获取他们的见解 但这会减慢请求速度 我期待这样的回应 posts da
  • 测试深层对象结构中属性的存在性

    在 javascript 中 假设我想访问对象深处的属性 例如 Entry mediaGroup 0 contents 0 url 在该结构的任何点上 属性都可能未定义 因此可能无法设置 mediaGroup 简单的说法是什么 if ent
  • PHP 获取标头不适用于 -

    我正在尝试获取 URL 标头的输出 它非常适合子域示例 subdomain example com 我将收到正常消息 HTTP 200 ok 等 但如果子域有 其中标题中不显示任何内容 test tumblr com or test tum
  • css / js 中的自动换行

    我正在寻找一种跨浏览器的方式来包装具有预定宽度的 div 内部没有中断空格 例如长 URL 的长文本部分 以下是我在网上找到的一些解决方案及其原因don t为我工作 溢出 隐藏 自动 滚动 我需要整个文本在不滚动的情况下可见 div 可以垂
  • 同一数据上的多个轴

    我试图在相同的数据上使用两个轴 数据有几个DefaultTableXYDatasets 情节是一个XYPlot 我有两个XYLineAndShapeRenderers和一个StackedXYAreaRenderer2 y 值的所有数据均以米
  • 按(逆)时针顺序排列凹多边形顶点?

    我有一组无序的顶点 可能形成一个凹多边形 现在我想按顺时针或逆时针顺序排列它们 答案在这里建议采取以下步骤 找到多边形中心 计算角度 按角度对点排序 这显然仅适用于凸多边形 当点形成凹多边形时就会失败 我怎样才能对凹面做到这一点 我正在使用
  • 除非打印出来,否则值不会在 while 循环中更新[重复]

    这个问题在这里已经有答案了 好的 所以我有一个监视线程 它检查 ArrayList 的大小 并在该大小大于某个数字后执行某些操作 我现在遇到的问题是大小值永远不会更新 除非我的循环中有打印语句 这是一些代码来展示我到底要做什么 while
  • python中多条线的最近交点

    我需要一个好的算法来计算最接近 python 中的线集合的点 最好使用最小二乘法 我发现这篇关于 python 实现的文章不起作用 在Python中使用最小二乘法找到多条线的中心 我在 Matlab 中发现了这个资源 每个人似乎都喜欢 但我