我有一个具有一定数量的行和列的掩码。 我想只读取包含例如1的(i,j)组件。 然后,一旦找到具有1的(i,j)分量,如果(i + 1,j),(ii,j),(i,j + 1),(i,j-1)中的任何一个执行四个不同的动作等于1。
希望这很清楚。 欢迎任何建议。 感谢。
答案 0 :(得分: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
不一定是最快的构造,我们可以讨论使用它的优雅性和可读性,而不是一系列循环,但不要这样做。