我有一个如下形式的 NxN 对称矩阵 F
F_11 F_12 F_13 ... F_1N
F_21 ...
F_31
.
.
.
F_N1 F_N2 F_N3 ... F_NN
每个子矩阵 F_IJ 的大小为 m x m。
此矩阵是在 MatLab 中创建的,将在 C 程序中使用。因此,这些值按列存储在 vector 中。 (例如, vector 的形式为:(F_11_11,F_11_21,F_11_31,...F_11_m1,F_21_11,...F_NN_(m-1)m,F_NN_mm)。
我的问题如下:为了可读性,我想在 C 中定义一种访问 F 值的方法,给定第一个子矩阵位置的索引 (I,J) 和索引 (i,j ) 值在子矩阵中的位置。如何将矩阵的线性索引链接到 (I,J,i,j) 索引?
最佳答案
我假设所有索引都是从零开始的,就像在 C/C++ 中一样。如果您想使用 Matlab 样式的基于 1 的索引,请从每个索引中减去 1。
我没查,不过我猜你的索引应该是...
int idx = I*m+J*N*m*m+i+j*N*m;
关于c - MEX 文件中 Matlab 矩阵的线性索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34897382/