1

比如说,我有一个尺寸为 1x1x1 的立方体,跨越坐标 (0,0,0) 和 (1,1,1)。我想在这个立方体内生成一组随机的点(假设 10 个点),这些点有点均匀分布(即在彼此之间的某个最小和最大距离内,并且也不太靠近边界)。我如何在不使用循环的情况下解决这个问题?如果使用向量/矩阵运算无法做到这一点,那么使用循环的解决方案也可以。

让我提供一些关于我的问题的更多背景细节(这将有助于我确切需要什么以及为什么)。我想在多面体中集成一个函数 F(x,y,z)。我想按如下数字方式进行:

$F(x,y,z) = \sum_{i} F(x_i,y_i,z_i) \times V_i(x_i,y_i,z_i)$

这里,$F(x_i,y_i,z_i)$ 是函数在点 $(x_i,y_i,z_i)$ 的值,$V_i$ 是权重。因此,要准确计算积分,我需要确定一组彼此不太接近或彼此不太远的随机点(对不起,我自己不知道这个范围是多少。我将能够计算出只有在我有工作代码后才使用参数研究)。此外,我需要为具有多个多面体的 3D 网格执行此操作,因此我想避免循环以加快速度。

4

2 回答 2

2

看看这个带有固定总和的漂亮随机向量生成器FEX 文件。代码“生成 m 个随机 n 元素列向量的值 [x1;x2;...;xn],每个列向量都有一个固定的和 s,并受到限制 a<=xi<=b。向量是随机且均匀地分布在解的 n-1 维空间中。这是通过将该空间分解为许多不同类型的单纯形(线段、三角形和四面体的多维概括)来实现的。“rand”函数用于在每个单纯形内均匀分布向量,并进一步调用“rand”用于选择不同类型的单纯形,其概率与其各自的 n-1 维体积成正比。该算法不执行任何拒绝解决方案 - 所有这些都是这样生成的已经适合规定的超立方体。”

于 2012-11-08T08:18:31.780 回答
1

使用i=rand(3,10)where 每一列对应一个点,每一行对应一个轴上的坐标 (x,y,z)

于 2012-11-08T22:14:14.727 回答