使用布尔“掩码”数组在C中进行数组索引

问题描述 投票:1回答:1

我有一个非常大的数组,其行数和列数为(nr,nc)。我遍历此数组以从该数组的常量项(px,py)计算函数“ fun”。此功能的计算仅在此点附近的恒定区域(距离d)中相关。因此,我的目标是加快代码的执行速度,并且仅在该点(px,py)附近的圆中进行计算。

int i;
int j;
for(i=0; i<nr; i++){
    for(j=0; j<nc; j++){
        *(arr_stg+i*nc+j) = fun(i,j,px,py);
    }
}

我还有一个计算布尔值“掩码”的函数(我不知道这是否是正确的词)。我用一个采样点周围的欧式距离来计算它。因此,对于给定的距离,即4,我计算出这种掩码数组:

0 0 0 0 1 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0 0

(确切的形式在这里不相关,应该适用于任何这种“面具”)

我的问题是,我如何更改两个for循环,以仅在给定点周围的此蒙版上进行迭代,以使我获得更快的代码,然后仅对大数组的所有i,j进行计算,然后不要使用距离大于给定距离的距离。

谢谢。

我有一个非常大的数组,其行数和列数为(nr,nc)。我遍历此数组以从该数组的常量项(px,py)计算函数“ fun”。此函数的计算...

c arrays indexing boolean mask
1个回答
0
投票

通常,如果以点d为中心具有大小(xc, yc)的蒙版,则需要遍历以下范围:

© www.soinside.com 2019 - 2024. All rights reserved.