【发布时间】:2013-10-02 18:02:34
【问题描述】:
我们可以使用遵循这种模式的线性索引来访问矩阵
0 1 2
3 4 5
6 7 8
在这种情况下很容易获得 i,j 坐标(n 是矩阵维度)。对于基于 0 的索引,它会是。
i = 索引/n
j = 索引 % n
现在,如果我的矩阵是对称的,我只想访问上面的部分,该怎么办
0 1 2 3
.. 4 5 6
..... 7 8
........ 9
我知道线性索引将由下式给出
索引 = j + n*i - i (i-1) / 2
但我想知道给定 idx 的 i,j。你们知道这样做的任何方法吗?我在这里查了这个,但我找不到答案。提前致谢。
【问题讨论】:
-
至少在 Matlab 中,矩阵是行主导的,所以你的索引是关闭的。您可以不使用 Matlab 的原生
triu函数,还是真的只需要这些索引而不是上三角矩阵?为什么同时使用 c++ 和 Matlab 标签?你到底在找什么? -
MATLAB 中有一个函数叫做
ind2sub。你可以试试看。
标签: c++ algorithm matlab matrix