0

我有一个尺寸为 M x N x L 的 3d 数组,它定义了循环卷上的值(即,如果我们是零索引,则第 M-1 个点在第 0 个点旁边)。如果给定一个点的坐标(X、Y、Z),我如何才能巧妙地找到所有相邻的点(即仅在一维中相距一维的点)?

我最初的解决方案只是对数组中的所有值进行循环(数组相当小),然后有类似的东西:

if abs(X-M) + abs(Y-N) + abs(Z-L) == 1
  do neighboring point stuff
end

但这并没有考虑到循环方面。想一个快速、简洁的方法来做到这一点会很棒。

提前致谢!

4

1 回答 1

0

这就是我最终为那些感兴趣的人所做的(不知道为什么我没有早点想到它):

for dimension=1:3
  for direction=-1:2:1
    vec = zeros(3,1);
    vec(dimension) = direction;

    this_point = point + vec;
    this_point(dimension) = mod(this_point(dimension)-1,size(obj.int_ref,dimension))+1;
  end
end

请注意,这是 matlab 代码,因此数组的索引从 1 开始(因此不寻常的 mod 行)。

于 2013-02-04T12:32:11.390 回答