从R / MatLab中的点创建随机圆

时间:2018-02-09 03:17:10

标签: python r matlab random topology

我正在和我大学的一位教授做一些研究,他要求我为拓扑数据分析(TDA)创建一些数据。

我使用了R和MatLab的两个软件包,但作者似乎对执行与Betti点持久性相关的操作时如何随机化数据有类似的想法。

R(和MatLab)中的问题是圆圈是用:

创建的
select * from table where partitionId = 'test

这产生了一个圆,其具有均匀间隔的点(30),在中心点周围具有相等的半径。为了使数据随机化,来自包的作者的两个示例随机地从数据中采样。这会导致图像看起来像这样: Alpha Complex 教授问的是,我认为每个点都有一些“西格玛”。或偏离半径。这本质上会创造一个模糊的“模糊”。有一定厚度的戒指。这样,当对数据执行持久性时,出生/死亡轴将具有更有趣的输出。

在这段视频中大约2:30,我想知道我要做什么: Persistent homology

如果有人知道如何在Python中执行此操作,我也愿意尝试使用其他语言。

1 个答案:

答案 0 :(得分:1)

只要您安装了numpy,就可以正常使用以下内容(如果不安装,请在命令行中使用pip install numpy)。

import numpy as np

def circleUnif(n=30, radius=1, sigma=0, center=(0, 0)):
    radii = np.random.randn(n) * sigma + radius
    angles = np.random.rand(n) * np.pi * 2

    x = radii * np.cos(angles)
    y = radii * np.sin(angles)

    return np.transpose([x, y]) + center

作为示例用法:

>>> X = circleUnif(3, 1, 0, (2, 3))
>>> print X
[[1.29321773 3.70743115]
 [2.72817308 3.68539329]
 [2.35728855 2.06600595]]

根据我的经验,python与拓扑数据分析的成熟度不同。使用python中提供的数据科学工具没有任何问题,如果您愿意,可以使用python生成数据以在R中使用。但这是python真正缺乏数据科学任务的质量,稳定工具的少数几个例子之一。我最终可能会做一些,或者其他人可能,但是现在大多数TDA算法都没有很多选择。

相关问题