给定矩阵的索引,如何计算该索引的列?

时间:2013-10-16 21:44:06

标签: assembly matrix

说我有一个矩阵:

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 = 11因此将{3}从temp中删除,因此该行为3

现在如何获取该列?

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

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

2 个答案:

答案 0 :(得分:1)

在您完成行后,添加回列数,然后留下列号。

答案 1 :(得分: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;