Arrays 将阻塞数据的1D索引转换为整个数据的1D索引

Arrays 将阻塞数据的1D索引转换为整个数据的1D索引,arrays,algorithm,indexing,Arrays,Algorithm,Indexing,我将卷(3D图像)分为16x16x16个块。整个卷是128x128x128。数据存储在线性存储器中。对于每个块,我将开始索引存储在整个数据的线性内存中。 现在,我需要重新计算索引,从16x16x16块到128x128x128数据的索引。每个块都使用索引0,1,2,3,…4096进行迭代,我需要将其更改为全局线性索引 例如: 2D示例如图所示。我想将红点(索引135)转换为整个图像中的索引。意味着它将是1040+左右。块角中的数字是图像中的线性偏移。 我需要三维数据的公式。 块中的坐标:(索引di

我将卷(3D图像)分为16x16x16个块。整个卷是128x128x128。数据存储在线性存储器中。对于每个块,我将开始索引存储在整个数据的线性内存中。 现在,我需要重新计算索引,从16x16x16块到128x128x128数据的索引。每个块都使用索引0,1,2,3,…4096进行迭代,我需要将其更改为全局线性索引

例如:

2D示例如图所示。我想将红点(索引135)转换为整个图像中的索引。意味着它将是1040+左右。块角中的数字是图像中的线性偏移。 我需要三维数据的公式。 块中的坐标:(索引div 256,(索引div 16)mod 16,索引mod 16)

块原点坐标:(16*(块分区64)、16*((块分区8)mod 8)、16*(块分区8))

整个卷中的坐标:(16*(块分区64)+(索引分区256),(16*((块分区8)模块8)+(索引分区16)模块16)),16*(块分区8)+(索引模块16))

所以全球指数是

128*128*(16*(块分区64)+(索引分区256))+128*(16*((块分区8)模块8)+((索引分区16)模块16))+16*(块分区8)+(索引模块16)

Block 1, index [2] => convert to index [18]
Block 1, index [18] => convert to index [146]