我有一个带有一定数量的行和列的掩码。我只想阅读包含例如 1 的 (i,j) 组件。然后一旦找到具有 1 的 (i,j) 组件,如果 (i+1,j),(ii ,j),(i,j+1),(i,j-1) 等于 1。
希望这很清楚。欢迎任何建议。谢谢。
让你的面具是这样的:
integer, dimension(1:r,1:c) :: mask
那么以下片段应该为您指明正确的方向:
forall (i=1:r, j=1:c, mask(i,j)==1)
if ( mask(i-1,j)==1) then
! do the right thing
else if ( mask(i+1,j)==1) then
! I hope you get the picture now
...
+/- i/j
我将留给您处理超出数组边界 的边缘情况。forall
不一定是使用最快的构造,我们可以争论使用它的优雅性和可读性,而不是一系列循环,但我们不要。