我正在尝试使用scipy.spatial.Delaunay函数复制由Python中的Matlab delaunayn函数执行的N维Delaunay三角剖分.然而,虽然Matlab函数给了我想要和期望的结果,但是scipy给了我不同的东西.考虑到两者都是QHull库的包装器,我发现这很奇怪.我假设Matlab在其调用中隐式设置了不同的参数.我试图在他们两个之间复制的情况可以在Matlab’s documentation找到.

设置是在中心有一个点,如下所示.我提供的蓝线有助于形象化,但它们没有任何目的或意义.

我期望的三角测量结果是12个单纯形式(在Matlab示例中列出),如下所示.

然而,这个python等效产生“额外”的单纯形.

x = np.array([[-1,-1,-1],[-1,1],1,[1,[0,0]])

simp = scipy.spatial.Delaunay(x).simplices

返回的变量simp应该是一个M×N数组,其中M是找到的单纯形数(对于我的情况应该是12),N是单形中的点数.在这种情况下,每个单形都应该是四面体,意味着N是4.

我发现的是,M实际上是18,额外的6个单纯形不是四面体,而是立方体的6个面.

这里发生了什么?如何将返回的单纯形式限制为仅仅是四面体?我用这个简单的案例来证明这个问题,所以我想要一个不适合这个问题的解决方案.

编辑

感谢Amro的回答,我能够解决这个问题,我可以在Matlab和Scipy之间找到一个简单的匹配.有两个因素在起作用.首先,正如所指出的,Matlab和Scipy使用不同的QHull选项.其次,QHull返回零容量的单纯形. Matlab删除了这些,Scipy没有.这在上面的例子中很明显,因为所有6个额外的单纯形都是立方体的零体积共面面.可以使用以下代码在N维中删除它们.

N = 3 # The dimensions of our points

options = 'Qt Qbb Qc' if N <= 3 else 'Qt Qbb Qc Qx' # Set the QHull options

tri = scipy.spatial.Delaunay(points,qhull_options = options).simplices

keep = np.ones(len(tri),dtype = bool)

for i,t in enumerate(tri):

if abs(np.linalg.det(np.hstack((points[t],np.ones([1,N+1]).T)))) < 1E-15:

keep[i] = False # Point is coplanar,we don't want to keep it

tri = tri[keep]

我想应该解决其他条件,但我保证我的点已经没有重复,并且方向条件似乎对我能辨别的输出没有影响.

matlab中的delaunay,python – Matlab delaunayn和Scipy Delaunay之间的区别相关推荐

  1. matlab中dist的命令,matlab dist函数

    dist--欧式距离加权函数(Euclidean distance weight function) 语法: Z = dist(W,P) df = dist('deriv') D = dist(pos ...

  2. matlab中错误使用fmincon,MATLAB中fmincon 函数问题

    MATLAB中fmincon 函数问题 Matlab的fmincon优化问题 请问: 各位高手帮忙看看我的程序又什么问题?显示错误 Error in ==> Fun at 33 [w,fval] ...

  3. python中定义变量和数组_Python中的线程和全局变量 - 数组和标准变量之间的区别?...

    我目前尝试使用线程编写一个更大的python程序,并遇到了数组不必被声明为全局的问题.Python中的线程和全局变量 - 数组和标准变量之间的区别? import numpy as np import ...

  4. Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?

    Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别? Java 中访问数据库的步骤 1)注册驱动: 2)建立连接: 3)创建Statement: 4)执 ...

  5. 范德蒙德矩阵在MATLAB中怎么表示,Python 之 Python与MATLAB 矩阵操作总结

    Python 之 Python与MATLAB 矩阵操作小结 一.线形代数理论基础 线形代数(linear algebra)是数学的一个分支,研究矩阵理论.向量空间.线性变换和有限维线形方程组等内容. ...

  6. matlab中ind2sub函数,Python中的MATLAB ind2sub等价

    据我所知,这些函数在MATLAB中没有直接实现. 结果我看不懂文件.如果您想要sub2ind的功能,那么您需要^{}函数.函数声明说您需要两个输入.第一个输入是2Dnumpy数组,其中每一行是特定维度 ...

  7. matlab中集合的表示,Matlab常用命令集合

    1.常用命令-->管理命令和函数 addpath添加目录到MATLAB搜索路径doc在Web浏览器上现实HTML文档help显示Matlab命令和M文件的在线帮助helpwin helpdesk ...

  8. MATLAB中 raw(,利用Photoshop + Matlab 解析10-bit RAW

    1.Photoshop处理RAW 运行Photoshop,打开RAW图.在跳出的选项窗口填入图像基本信息: 宽度.长度:Sensor长宽: 通道数量:1: 位深(Depth):16Bits: 字节顺序 ...

  9. m 文件 dll matlab 中调用_Java与MatLab混编

    该篇介绍Java与MatLab的混合编程 环境:Windows10,Jdk 1.8.0_261 64位,MatLab r2018b 64位 先安装MatLab MatLab安装 一.打开MatLab, ...

  10. matlab中向量norm,【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关

    [Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处外链网址已屏蔽 norm范数使用 help norm norm ...

最新文章

  1. 破解Win2008口令-ERD6.0
  2. 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测...
  3. 利用colab保存模型_在Google Colab上训练您的机器学习模型中的“后门”
  4. vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...
  5. linux 的那些hung 检测机制
  6. 不同性能极限下的服务器,探求极限性能 服务器测试之ScienceMark
  7. 计算机未来的发展趋势三百字,数字媒体毕业论文5000字_大专毕业论文5000字_计算机类毕业论文5000字文库...
  8. 亚马逊靠“新闻稿”推动创新,跃居市值第一
  9. 性能测试很难吗?一文带你学会性能测试核心流程和概念
  10. 周末献礼 MyVoix2.0.js 麦克风波形绘制(一)
  11. Linux 2.6内核启动传递命令行的过程分析
  12. Qt网络编程-简易版TcpClient入门Demo(1)
  13. 奔图打印机显示未连接_奔图打印机常见故障及解决方法
  14. 新版标准日本语中级_第五课
  15. 基于特征子空间的波束形成算法原理介绍及MATLAB实现
  16. CarSim仿真快速入门(七)—车辆参数化建模
  17. 写一篇大数据背景下室内设计的论文
  18. 搭配Online:南方航2020年1月正式退出天合联盟
  19. oracle密码锁屏时间,OPPO用户怎么让手机变流畅?花1分钟关闭这4个设置,瞬间变流畅...
  20. PowerApps 连接Azure Sql

热门文章

  1. 入坑KeePass(一)安全桌面输入管理密钥后,不能输入中文
  2. 基础篇—了解一些常用的基础知识
  3. 如何VisualSVN备份到不同Windows服务器中
  4. IBM即将倒闭,微软离倒闭还有18个月
  5. jcrop 用法小结
  6. Lucene 索引文件的读取(十四)之fdxfdtfdm
  7. 【生产调度优化】使用simulink实现生产调度优化
  8. 数据可视化 d3操作汇总(二):圆弧、饼图、环图、玫瑰图绘制
  9. 奶块服务器正在维护是什么意思,奶块例行维护什么意思 | 手游网游页游攻略大全...
  10. 基于VCS使用VPI在verilog中调用c调用python进行仿真