对球形体积内均匀分布的随机点进行采样

2023-11-27

我希望能够生成落在球形体积内的粒子位置的随机均匀样本。

下图(由http://nojhan.free.fr/metah/)显示了我正在寻找的内容。这是球体的切片,显示点的均匀分布:

Uniformly distributed circle

这就是我目前得到的:

Uniformly Distributed but Cluster Of Points

您可以看到,由于球坐标和笛卡尔坐标之间的转换,中心有一群点。

我正在使用的代码是:

def new_positions_spherical_coordinates(self):
   radius = numpy.random.uniform(0.0,1.0, (self.number_of_particles,1)) 
   theta = numpy.random.uniform(0.,1.,(self.number_of_particles,1))*pi
   phi = numpy.arccos(1-2*numpy.random.uniform(0.0,1.,(self.number_of_particles,1)))
   x = radius * numpy.sin( theta ) * numpy.cos( phi )
   y = radius * numpy.sin( theta ) * numpy.sin( phi )
   z = radius * numpy.cos( theta )
   return (x,y,z)

下面是一些 MATLAB 代码,据说可以创建均匀的球形样本,类似于以下给出的方程http://nojhan.free.fr/metah。我似乎无法破译它或理解他们做了什么。

function X = randsphere(m,n,r)

% This function returns an m by n array, X, in which 
% each of the m rows has the n Cartesian coordinates 
% of a random point uniformly-distributed over the 
% interior of an n-dimensional hypersphere with 
% radius r and center at the origin.  The function 
% 'randn' is initially used to generate m sets of n 
% random variables with independent multivariate 
% normal distribution, with mean 0 and variance 1.
% Then the incomplete gamma function, 'gammainc', 
% is used to map these points radially to fit in the 
% hypersphere of finite radius r with a uniform % spatial distribution.
% Roger Stafford - 12/23/05

X = randn(m,n);
s2 = sum(X.^2,2);
X = X.*repmat(r*(gammainc(s2/2,n/2).^(1/n))./sqrt(s2),1,n);

我非常感谢任何关于在 Python 中从球形体积生成真正均匀样本的建议。

似乎有很多例子展示了如何从均匀球壳中采样,但这似乎是一个更容易的问题。该问题与缩放有关 - 半径 0.1 处的粒子应少于半径 1.0 处的粒子,以便从球体体积生成均匀样本。

Edit:修正并删除了我通常要求的事实,我的意思是制服。


虽然我更喜欢球体的丢弃方法,但为了完整性我提供准确的解决方案.

在球坐标系中,利用抽样规则:

phi = random(0,2pi)
costheta = random(-1,1)
u = random(0,1)

theta = arccos( costheta )
r = R * cuberoot( u )

现在你有一个(r, theta, phi)组可变换为(x, y, z)以通常的方式

x = r * sin( theta) * cos( phi )
y = r * sin( theta) * sin( phi )
z = r * cos( theta )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对球形体积内均匀分布的随机点进行采样 的相关文章

  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐

  • 从 char* 获取 istream

    我有一个 char 和从库接收的数据长度 我需要将数据传递给采用 istream 的函数 我知道我可以创建一个字符串流 但这将复制所有数据 而且 数据肯定会有 0 因为它是一个 zip 文件 并且创建字符串流将获取数据 直到我认为第一个 0
  • 如何使 JScrollPane 滚动以跟随输入焦点?

    我有一个带有大面板的 Swing 应用程序 该面板被包裹在JScrollPane 用户通常通过选项卡在面板的子组件之间移动 因此当他们使用选项卡切换到视图之外的某些内容时 我希望滚动窗格自动滚动 以便具有输入焦点的组件始终可见 我尝试过使用
  • Delphi自定义动画-碰撞检测

    我正在使用自定义绘图 2D 动画 并且正在尝试找出如何检测移动物体何时与地图中的墙壁碰撞 用户按住键盘上的方向键来移动对象 地图存储为点的数组结构 地图中的墙壁可能是有角度的 但没有弯曲的墙壁 使用地图结构 FMap TMap 在我下面的代
  • 触摸后关闭弹出窗口

    我在我的里面创建了一个弹出窗口MainViewController当使用某个按钮触摸时UIPopoverPresentationController并像 WWDC 2014 中所示那样设置它的委托 方法如下 MainViewControll
  • C 和 C++ 中带有 const 限定符的数组指针

    考虑以下程序 int main int array 9 const int p2 9 array 它在 C 中编译得很好 参见现场演示here 但在 C 中编译失败 默认情况下 GCC 会给出以下警告 参见现场演示here prog c I
  • Scala REPL:如何查找函数类型?

    在 Scala REPL 中可以找到值类型 scala gt val x 1 x Int 1 scala gt t x Int 然而 Scala REPL 不显示函数的类型信息 scala gt def inc x Int x 1 inc
  • SQLiteDatabase多线程锁定模式

    我使用此类来管理与底层 SQLiteDatabase 的连接 public class BasicDataSource protected DatabaseHandler dbHelper protected volatile SQLite
  • 使用 PyObjC 与 Mountain Lion 的通知中心合作

    我正在尝试从 python 脚本向 Mountain Lion 发送通知 并对通知的点击做出反应 发送通知现在可以完美地找到 但我无法让 Lion 在单击时回调我的脚本 这就是我所做的 我实现了一个通知类 该类实例的唯一目的是通过调用来提供
  • 在分段实时 MP4 流中发送定期元数据?

    正如主题所建议的 我想知道是否可以在分段 MP4 直播流中定期发送有关流内容的元数据 我使用以下命令 1 来获取碎片 MP4 ffmpeg i rtsp admin email protected c v copy an movflags
  • 在Python中播放WAV文件

    我尝试用 PyGame 来播放这样的 WAV 文件 import pygame pygame init pygame mixer music load mysound wav pygame mixer music play pygame e
  • 从头开始重写 iOS 应用程序“无法更改应用程序的可执行权限。”

    我在商店中有一个应用程序 我想开始 从头开始 重写整个应用程序 当我尝试在已包含旧应用程序的设备 iPhone 4 上构建并执行新应用程序时 我收到错误 无法更改应用程序的可执行权限 如果我在模拟器上运行新的可执行文件或删除设备上的当前应用
  • Android TableRow - 如何动态添加视图到某个位置?

    我正在动态构建 TableLayout 我需要 TableRow 在某些列位置有间隙 例如 我需要行在 3 和 5 位置上有 ImageView 下一行在 1 2 4 位置上有 ImageView 我尝试使用 TableRow row1 n
  • 通过 const 引用或通过值传递 int ,有什么区别吗? [复制]

    这个问题在这里已经有答案了 当我传递像这样的基元时int and double对于函数 通过 const 引用传递它们还是通过值传递它们更好 假设我不更改变量的值 int getValueFromArray int index return
  • 无法使用 RestSharp 发送 cookie

    我一直在尝试使用几种不同的方法在 Windows Phone 上访问基于 REST 的 API 但我似乎在使用所有这些方法将 cookie 附加到请求时遇到了问题 我已经尝试过WebClient方法 现在似乎已标记为 SecurityCri
  • 替换字符串中的 {x} 标记

    我们有一个模板 URL 例如 http api example com sale auth user xxxxx auth pass xxxxx networkid networkid category b2c country IT pag
  • 如果我不 join() python 线程会发生什么?

    我有一个疑问 我见过开发人员编写类似以下代码的示例 import threading def do something return true t threading Thread target do something t start t
  • 按创建日期对列表 进行排序 C#

    使用 MSDN 上的这个例子 using System Collections Generic using System IO namespace CollectionTest public class ListSort static vo
  • 在 Google Apps 脚本中调整图像大小

    我有一张图片 我想调整它的大小 应用程序脚本代码 var fileId idImage var img DriveApp getFileById fileId getBlob newFile getBody insertImage 0 im
  • localStorage 在 IOS-6 Safari 中无法访问

    我无法在 Safari 带有 IOS 6 的 iPad 中访问 localStorage 例如 以下代码在 Windows 的所有浏览器和 带有 iOS 5 的 iPad 上运行良好 但在 iOS 6 中则不然 localStorage s
  • 对球形体积内均匀分布的随机点进行采样

    我希望能够生成落在球形体积内的粒子位置的随机均匀样本 下图 由http nojhan free fr metah 显示了我正在寻找的内容 这是球体的切片 显示点的均匀分布 这就是我目前得到的 您可以看到 由于球坐标和笛卡尔坐标之间的转换 中