1

假设我有一个这样的矩阵:

1  0  0  0
0  2  0  6
0  0  3  0

我有索引 11 (代表3上述矩阵中的数字)。我想出了如何找到该索引的行:从索引中减去矩阵中的列数,直到它的负数或零,减法的数量就是行。在伪代码中:

numCol = 4
index = 11
temp = index
count = 0
while (temp > 0) {
    temp -= numCol
    count++
}
curRow = count

在我的示例中,index = 11sotemp将从 3 次中减去,因此该行为 3

现在我如何获得专栏?

我正在使用 ARM 程序集,矩阵存储如下:

.data
.align
MatA:    .word   2, 0, 0, 0, 0, 2, 0, 6, 0, 0, 3, 0
.end
4

2 回答 2

1

完成后获得行后,重新添加列数,剩下的就是列号。

于 2013-10-16T21:47:22.490 回答
1

除法和模数:

row = index / numCol;
col = index % numCol;

对于您的矩阵:

row = 10 / 4 = 2; (zero indexed)
col = 10 % 4 = 2; (zero indexed)

通过您的重复减法:

numCol = 4;
index = 10;  // (zero-indexed)
temp = index;
count = 0;
while (temp > numCol) {
    temp -= numCol;
    count++;
}
curRow = count;
curCol = temp;
于 2013-10-16T21:47:32.913 回答