我想将上三角矩阵变换为不带对角元素的矢量。我注意到这个问题中给出的解决方案。 Map upper triangular matrix on vector skipping the diagonal。
但我的问题没什么不同。 我想将5 * 5矩阵转换为矢量,如:
x; a12; a13; a14; a15<br/>
x; x; a23; a24; a25<br/>
x; x; x; a34; a35<br/>
x; x; x; x; a45<br/
到
a12, a13, a14, a15, a23, a24, a25, a34, a35, a45
This means,<br/>
(i=1,j=2)->k=1; <br/>
(i=1,j=3)->k=2; <br/>
(i=1,j=4)->k=3; <br/>
(i=1,j=5)->k=4; <br/>
(i=2,j=3)->k=5; <br/>
(i=2,j=4)->k=6; <br/>
(i=2,j=5)->k=7; <br/>
(i=3,j=4)->k=8; <br/>
(i=3,j=5)->k=9; <br/>
(i=4,j=5)->k=10; <br/>
我怎样才能得到这种关系f(i,j,N = 5)= k? 我怎样才能得到反函数(i,j)= g(k,N)?
谢谢!
答案 0 :(得分:0)
通过在嵌套for循环中为每个连续行使用递增起始索引迭代矩阵,同时将元素添加到向量。
for (rowI = 0; rowI < 4; rowI++) {
for (colI = rowI+1; colI < 5; colI++) {
vector.add(matrix[rowI][colI]);
}
}
或者如果您只需要索引,那么方便的单行是:
f(i,j,N) = (i-1)N + i(i-1)/2 + (j-i)