matlab+voronoin函数,Voronoi 图

matlab+voronoin函数,Voronoi 图计算 Voronoi 图本示例显示如何计算二维和三维 Voronoi 图 MATLAB 提供用于绘制二维 Voronoi 图以及计算 N 维 Voronoi 图的拓扑的函数 事实上 由于所需内存的指数级增长 对高于六维的大中型数据集 Voronoi 计算是不实际的 voronoi 绘图函数为二维空间的点集绘制 Voronoi 图 在 MATLAB 中 有两种方式计算点集的 Voronoi 图 v

计算 Voronoi 图

本示例显示如何计算二维和三维 Voronoi 图。

MATLAB® 提供用于绘制二维 Voronoi 图以及计算 N 维 Voronoi 图的拓扑的函数。事实上,由于所需内存的指数级增长,对高于六维的大中型数据集,Voronoi 计算是不实际的。

voronoi 绘图函数为二维空间的点集绘制 Voronoi 图。在 MATLAB 中,有两种方式计算点集的 Voronoi 图:

voronoin 函数支持为 N 维空间 (N ≥ 2) 中的离散点计算 Voronoi 拓扑。voronoiDiagram 方法支持为二维或三维离散点计算 Voronoi 拓扑。

建议用 voronoiDiagram 方法计算二维或三维拓扑,因为此方法更稳定,对大型数据集表现更佳。此方法支持递增插值、移除点和补充查询,例如最近邻点搜索。

voronoin 函数和 voronoiDiagram 方法使用矩阵格式表示 Voronoi 图的拓扑。有关此数据结构的详细信息,请参阅 三角剖分矩阵格式。

给定点集 X,按如下方式获取 Voronoi 图的拓扑:

使用 voronoin 函数

[V,R] = voronoin(X)

使用 voronoiDiagram 方法

dt = delaunayTriangulation(X);

[V,R] = voronoiDiagram(dt)

V 是表示 Voronoi 顶点(这些顶点是 Voronoi 边的端点)坐标的矩阵。按照惯例,V 中的第一个顶点是无限顶点。R 是向量元胞数组长度 size(X,1),表示与每个点相关联的 Voronoi 区域。因此,与点 X(i) 相关联的 Voronoi 区域是 R{i}。

定义点集并绘制其 Voronoi 图

X = [-1.5 3.2; 1.8 3.3; -3.7 1.5; -1.5 1.3; 0.8 1.2; …

3.3 1.5; -4.0 -1.0; -2.3 -0.7; 0 -0.5; 2.0 -1.5; …

3.7 -0.8; -3.5 -2.9; -0.9 -3.9; 2.0 -3.5; 3.5 -2.25];

[VX,VY] = voronoi(X(:,1),X(:,2));

h = plot(VX,VY,’-b’,X(:,1),X(:,2),’.r’);

xlim([-4,4])

ylim([-4,4])

% Assign labels to the points X.

nump = size(X,1);

plabels = arrayfun(@(n) {sprintf(‘X%d’, n)}, (1:nump)’);

hold on

Hpl = text(X(:,1), X(:,2)+0.2, plabels, ‘color’, ‘r’, …

‘FontWeight’, ‘bold’, ‘HorizontalAlignment’,…

‘center’, ‘BackgroundColor’, ‘none’);

% Compute the Voronoi diagram.

dt = delaunayTriangulation(X);

[V,R] = voronoiDiagram(dt);

% Assign labels to the Voronoi vertices V.

% By convention the first vertex is at infinity.

numv = size(V,1);

vlabels = arrayfun(@(n) {sprintf(‘V%d’, n)}, (2:numv)’);

hold on

Hpl = text(V(2:end,1), V(2:end,2)+.2, vlabels, …

‘FontWeight’, ‘bold’, ‘HorizontalAlignment’,…

‘center’, ‘BackgroundColor’, ‘none’);

hold off

c3c5977d6f43643925d96a100832dfa3.png

R{9} 给出了与点位 X9 相关联的 Voronoi 顶点的索引。

R{9}

ans = 1×5

5 7 17 12 9

Voronoi 顶点的索引是基于 V 数组的索引。

类似地,R{4} 给出了与点位 X4 相关联的 Voronoi 顶点的索引。

R{4}

ans = 1×5

5 9 11 8 6

在三维空间中,Voronoi 区域为凸多面体,创建 Voronoi 图的语法是相似的。但 Voronoi 图的几何形状更加复杂。以下示例描述了三维 Voronoi 图的创建过程和单个区域的绘制过程。

在三维空间创建一个包含 25 个点的样本,并计算此点集的 Voronoi 图的拓扑。

rng(‘default’)

X = -3 + 6.*rand([25 3]);

dt = delaunayTriangulation(X);

计算 Voronoi 图的拓扑。

[V,R] = voronoiDiagram(dt);

求距离原点最近的点,并绘制与此点相关联的 Voronoi 区域。

tid = nearestNeighbor(dt,0,0,0);

XR10 = V(R{tid},:);

K = convhull(XR10);

defaultFaceColor = [0.6875 0.8750 0.8984];

trisurf(K, XR10(:,1) ,XR10(:,2) ,XR10(:,3) , …

‘FaceColor’, defaultFaceColor, ‘FaceAlpha’,0.8)

title(‘3-D Voronoi Region’)

800e84423f5309398e73dcd7a0d24adf.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210523.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午7:28
下一篇 2026年3月19日 上午7:29


相关推荐

  • js里面的document.cookie详解

    js里面的document.cookie详解设置cookie每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:document.cookie=”userId=828″;如果要一次存储多个名/值对,可以使用分号加空格(;)隔开,例如:document.cookie=”userId=828;userName=hulk”;在cookie的名或值中不能使用分号(;)、逗号(,)、

    2022年7月11日
    37
  • 101道算法javaScript描述【一】

    101道算法javaScript描述【一】数据结构与算法是计算机专业必修课,但是对于前端工程师来说,沉浸在业务代码之中很少会和算法直接打交道,甚于说根本不需要用到什么算法。那么我们为什么要学习算法,意义何在?不会算法活不是一样能干。把一件事情做到极致是非常必要的职业心态,这离不开数据结构和算法。另一方面,再说面试,这和在学生时代为什么要学数理化是一个道理,考试要考,你就要学。面试造火箭,工作拧螺丝,面试官通过问几道算法题了解你的编程和逻辑思维能力并不奇怪。万丈高楼平地起,基础知识掌握多少,一定程度上决定了我们的技术能走多远。想要作出一点事情,基础一

    2022年10月5日
    3
  • Java单例模式的不同写法(懒汉式、饿汉式、双检锁、静态内部类、枚举)[通俗易懂]

    Java单例模式的不同写法(懒汉式、饿汉式、双检锁、静态内部类、枚举)[通俗易懂]Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。单例模式好处:它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间; 能够避免由于操作多个实例导致的逻辑错误。 如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用…

    2022年7月25日
    15
  • 文心一言会员兑换教程及步骤详解

    文心一言会员兑换教程及步骤详解

    2026年3月12日
    3
  • 卷积神经网络如何进行图像识别的

    卷积神经网络如何进行图像识别的在机器视觉的概念中,图像识别是指软件具有分辨图片中的人物、位置、物体、动作以及笔迹的能力。计算机可以应用机器视觉技巧,结合人工智能以及摄像机来进行图像识别。 什么是图像识别?为什么要进行图像识别? 在机器视觉的概念中,图像识别是指软件具有分辨图片中的人物、位置、物体、动作以及笔迹的能力。计算机可以应用机器视觉技巧,结合人工智能以及摄像机来进行图像识别。 …

    2022年6月10日
    41
  • linux安装svn服务器_linux安装svn客户端

    linux安装svn服务器_linux安装svn客户端1.https://tortoisesvn.net/downloads.html网站下载2.安装的时候如果出现下图的报错打开这个网站https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=49062,会自动帮你下载下载完成后安装即可3.没有特殊需求则默认安装4.出现这个则安装成功MySQL安装…

    2022年8月18日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号