如何从高斯分布制作环
How can I make ring from Gaussian distribution
我在 https://arxiv.org/pdf/1606.05908.pdf 上看到了高斯环的公式
但它没有用,我找到了另一个从中制作球体(环)的公式
正态分布
它是使用GCN制作的。我用这个算法从正态分布中制作了一个环,但它也没有用。
请帮帮我
第一个例子工作得很好。这是相关的 python 代码:
import matplotlib.pyplot as plt
import numpy as np
# Create and plot multivariate normal distribution
mean = [0, 0]
cov = [[1,0],[0,1]]
x, y = np.random.multivariate_normal(mean, cov, 100).T
plt.figure(1)
plt.plot(x, y, 'x')
plt.axis('equal')
# Generate z
def g(xy):
res_z = []
for z in xy:
z = np.array(z)
res_z.append(z / 10 + z / np.linalg.norm(z))
return res_z
xy = zip(x, y)
res_z = g(xy)
# Plot z
zx, zy = zip(*res_z)
plt.figure(2)
plt.plot(zx, zy, 'x')
plt.axis('equal')
plt.show()
这将输出(如果您单击并将图形拖动到如下所示的位置):
请注意,当您 运行 脚本时,您的输出将 略有 不同,因为 np.random.multivariate_normal
从基础分布中进行随机抽样(均值[0,0]
,恒等协方差矩阵).
我在使用 Anaconda 5.1.0,Python 3.6.
HTH.
我将提供该算法的更简单但更快的版本:
import numpy as np
X = np.random.multivariate_normal([0, 0], [[1, 0], [0,1]], data_size)
Z = X / 10 + X / np.sqrt(np.square(X).sum(axis=1, keepdims=True))
Z就是你想要的结果
我在 https://arxiv.org/pdf/1606.05908.pdf 上看到了高斯环的公式 但它没有用,我找到了另一个从中制作球体(环)的公式 正态分布
它是使用GCN制作的。我用这个算法从正态分布中制作了一个环,但它也没有用。
请帮帮我
第一个例子工作得很好。这是相关的 python 代码:
import matplotlib.pyplot as plt
import numpy as np
# Create and plot multivariate normal distribution
mean = [0, 0]
cov = [[1,0],[0,1]]
x, y = np.random.multivariate_normal(mean, cov, 100).T
plt.figure(1)
plt.plot(x, y, 'x')
plt.axis('equal')
# Generate z
def g(xy):
res_z = []
for z in xy:
z = np.array(z)
res_z.append(z / 10 + z / np.linalg.norm(z))
return res_z
xy = zip(x, y)
res_z = g(xy)
# Plot z
zx, zy = zip(*res_z)
plt.figure(2)
plt.plot(zx, zy, 'x')
plt.axis('equal')
plt.show()
这将输出(如果您单击并将图形拖动到如下所示的位置):
请注意,当您 运行 脚本时,您的输出将 略有 不同,因为 np.random.multivariate_normal
从基础分布中进行随机抽样(均值[0,0]
,恒等协方差矩阵).
我在使用 Anaconda 5.1.0,Python 3.6.
HTH.
我将提供该算法的更简单但更快的版本:
import numpy as np
X = np.random.multivariate_normal([0, 0], [[1, 0], [0,1]], data_size)
Z = X / 10 + X / np.sqrt(np.square(X).sum(axis=1, keepdims=True))
Z就是你想要的结果