这个序列中的数学关系是什么?

时间:2018-03-04 06:37:46

标签: matlab math matrix sequence sequences

我正在研究一种路径规划算法,该算法将"路径返回到目标"作为一系列数字。我需要找到这些数字对应的矩阵的哪个元素(行和列)。所以我正在寻找描述这种关系的数学表达式。

关系如下:

1 --> row = 1 and column = 1
2 --> row = 1 and column = 2
3 --> row = 1 and column = 3
4 --> row = 1 and column = 4
.
.
.
37901 --> row = 1 and column = 37901
37902 --> row = 2 and column = 1
37903 --> row = 2 and column = 2
37904 --> row = 2 and column = 3
.
.
.
1436485801 --> row = 37901 and column = 37901

注意1436485801 = 37901 ^ 2,其中37901 = 151 * 251。谢谢!

1 个答案:

答案 0 :(得分:1)

要将(row, column)对映射到1D索引,您可以使用:

 index = column-size * (row - 1)  + column

所以,在你的情况下,它是

index = 37901 * (row - 1) + column

Matlab有适合你的function sub2ind

// for a matrix A
index = sub2ind(size(A), row, column) 

修改

要执行相反的操作,将1D索引转换为行和列,您可以使用 function ind2sub (您必须知道矩阵的大小)

// for a matrix A
[row, column] = ind2sub(size(A), index) 

或者,如果您想手动执行,则值为:

row    = fix((index-1)/size(A,1)) + 1; // quotient 
column = rem( index-1, size(A,1)) + 1; // remainder