如何从索引中获取行和列?

时间:2012-08-06 02:29:46

标签: matrix

我在这里画了巨大的空白。

我发现的一切都是关于从给定的行和列获取索引,但是如何从索引中获取行和列?

行很简单:(int)(index / width)

我的大脑在试图计算色谱柱时遭受了大量的流血。

对我感到羞耻。

4 个答案:

答案 0 :(得分:33)

对于从零开始的索引,这两个操作是:

row    = (int)(index / width)
column = index % width

我在这里使用%因为我是C家伙,虽然你没有指定你的语言,但它看起来肯定是基于C语言的。

如果你的问题属于C或其兄弟,那么它将是你的特定环境的模运算符,剩下的就是index除以{{{ 1}}。

如果您没有拥有模数运算符,则可以使用:

width

答案 1 :(得分:8)

Paxdiablo的答案是对的。如果有人需要反向流程来从行和列获取索引:

index = (row * width) + column

答案 2 :(得分:1)

雨燕4

typealias ColumnRowType = (column:Int, row:Int)

func indexToColumnRow(index:Int, columns:Int) -> ColumnRowType
{
    let columnIndex = (index % columns)
    let rowIndex = /*floor*/(index / columns)    // we just cast to an `Int`

    return ColumnRowType(columnIndex, rowIndex)
}

答案 3 :(得分:0)

在Java中,列偏移量为1,这是一种实现方法

int offset=1;
column = Math.floorDiv(location-offset , 3)+offset;
row = ( (location-offset) %3 )+offset ;