我有一个稀疏的3d体积(立方体),在每个x,y位置我想创建一个半径为r的球体,中心位于x,y,z。对于每个球体,我想计算质心。
我的问题:
每个球体内的点不均匀分布,所以我的质量中心不是质心,我如何计算质心?我发现了许多不同的方式......
我需要在每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
答案 0 :(得分:3)
查看K-means clustering的更新步骤,它会找到球体的质心。
要查找应该包含在该球体中的点,请计算球体的质心和每个点之间的euclidean distance并将其阈值计算。如果距离小于球体的半径,则包括它。
在你的x,y,z球体质心集上的三个深嵌套for循环中执行此操作,然后就完成了。