我在以下问题中想知道除了使用循环之外是否有更快的解决方案。
我有一组点散布在三维空间中,每个点都有一个值。类似这样:dataPoints = [x1, y1, z1, v1; x2, y2, z2, v2; ...]。三维空间被均匀地分成子体积 dx × dy × dz。我需要创建一个矩阵,其中包含每个子体积中 v 的总和。
子体积的数量和数据点的数量可能相当大,约为 100 万。因此应该避免使用循环。
我可以轻松地找出一个点属于哪个子体积:
我有一组点散布在三维空间中,每个点都有一个值。类似这样:dataPoints = [x1, y1, z1, v1; x2, y2, z2, v2; ...]。三维空间被均匀地分成子体积 dx × dy × dz。我需要创建一个矩阵,其中包含每个子体积中 v 的总和。
子体积的数量和数据点的数量可能相当大,约为 100 万。因此应该避免使用循环。
我可以轻松地找出一个点属于哪个子体积:
ix(:) = floor(x(:) / dx) + 1;
iy(:) = floor(y(:) / dy) + 1;
iy(:) = floor(z(:) / dz) + 1;
现在我需要将所有具有相同元组(ix, iy, iz)
的点加起来。有什么想法吗?
accumarray()
加1 :) - Rody Oldenhuisaccumarray
和bsxfun
之间,我感觉相比我的同行们,我就像是 MATLAB 的神一样。 - Dang Khoaaccumarray
。 - texnic