c - MEX 文件中 Matlab 矩阵的线性索引

标签 c matlab matrix mex matrix-indexing

我有一个如下形式的 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/

相关文章:

matlab - 为什么 MATLAB save() 调用 saveobj() 两次?

python - 用于比较矩阵中的值的 ValueError

r - 我可以使用 Rcpp 加速我的 R 代码吗?

python - 如何遍历python中的矩阵列

c - c 中的奇怪结果

c - macOS:找不到 -lpaho-mqtt3c 的库

matlab - 如何在 MATLAB 中绘制特定多边形区域之外的点

matlab - 在 MATLAB 中为不同矩阵中的每一行应用相交

c - 如何在C中将数字字符串存储为无符号整数

在 C 中为未知(大小)结构创建缓冲区