我有一个三维点云(XYZ),其中
例如,在范围
我为测试创建了一个简单的XYZ数组,如下所示,在这种情况下,
如何在不使用循环的情况下完成此操作?
Z
可以是位置或能量。我希望将它们投影到一个n-by-m网格的2D表面上(在我的问题中,n=m
),以便每个网格单元格具有Z
的最大差值的值,如果Z
是位置,则具有求和值的值,如果Z
为能量。例如,在范围
0 <= (x,y) <= 20
内,有500个点。假设xy平面具有n-by-m分区,例如4-by-4;我指的是在x
和y
两个方向上,我们有4个间隔为5
的分区(使其最大为20
)。现在,这些单元格中的每一个都应该具有相应列中那些处于定义的xy平面中的点的Z
值的求和或最大差值的值。我为测试创建了一个简单的XYZ数组,如下所示,在这种情况下,
Z
表示每个点的能量。n=1;
for i=1:2*round(random('Uniform',1,5))
for j=1:2*round(random('Uniform',1,5))
table(n,:)=[i,j,random('normal',1,1)];
n=n+1;
end
end
如何在不使用循环的情况下完成此操作?
accumarray
被巧妙地使用。使用accumarray
确实有一个明显的学习曲线,但是一旦掌握了它,就会打开新的大门。 - chappjc