ループを使用するよりも、以下の問題に対するより高速な解決策があるのだろうか。
各ポイントに値が割り当てられた、3D 空間に散在する一連のポイントがあります。のようなものdataPoints = [x1, y1, z1, v1; x2, y2, z2, v2; ...]
です。dx
3D 空間はサブボリューム× dy
×に均等に分割されdz
ます。v
各サブボリュームの の合計を含む行列を作成する必要があります。
サブボリュームとデータ ポイントの数は、それぞれ 100 万のオーダーで、非常に大きくなる可能性があります。したがって、ループは本当に避けるべきです。
ポイントがどのサブボリュームに属するかは簡単にわかります。
ix(:) = floor(x(:) / dx) + 1;
iy(:) = floor(y(:) / dy) + 1;
iy(:) = floor(z(:) / dz) + 1;
ただし、同じタプルですべてのポイントを合計する必要があり(ix, iy, iz)
ます。何か案は?