1

我有一个稀疏的 3d 体积(立方体),在每个 x,y 位置我想创建一个半径为 r 的球体,中心位于 x,y,z。对于每个球体,我想计算质心。

我的问题:

  1. 每个球内的点分布不均,所以我的质心不是质心,我如何计算质心?我发现了很多不同的方法...

  2. 我需要每次都计算它size(x)*size(y),这可能非常大,我可以创建一个像这样的 3d 球体:

    w = ceil(r)*2+1;
    [x,y,z] = meshgrid(1:w,1:w,1:w);
    xc = floor(w./2)+1;
    yc = floor(w./2)+1;
    zc = floor(w./2)+1;   
    mask = (x-xc).^2 + (y-yc).^2 + (z-zc).^2 <= r.^2;
    mask = double(mask);
    

但这会让我对每个点都进行循环,并且会很耗时。谢谢matlabit

4

1 回答 1

3

看一下K-means clustering的更新步骤,它将找到球体的质心。

为了找到应该包含在该球体中的点,计算并阈值球体质心与每个点之间的欧几里得距离。如果距离小于球体的半径,则将其包括在内。

在您的一组 x,y,z 球体质心上的三个深度嵌套 for 循环中执行此操作,您就完成了。

于 2013-04-05T10:50:09.620 回答