【发布时间】:2014-05-11 22:45:24
【问题描述】:
来自 MATLAB 背景,我经常使用花哨的矩阵操作命令,例如 vec = matrix(:,1) 来提取,例如,matrix 的第一列作为向量。
将一些代码移植到 C 并需要将其与 FORTRAN 和 MATLAB 接口,现在我可以将矩阵存储在以列为主的单维数组中。
所以基本上,我正在使用宏
#define SUB2IND_2D(s1, s2, i1, i2) (s1)*(i2) + (i1)
和循环
for(size_t r=0; r<ROWS; ++r)
{
for(size_t c=0; c<COLS; ++c)
{
size_t index = SUB2IND_2D(ROWS,COLS,r,c);
// do something with matrix[index] here
}
}
为了访问相应的矩阵。现在,我的问题是:如何在 C 中的这个框架内有效地从 matrix 中提取列或行向量,就像我在 MATLAB 中使用 matrix(:,1) 或 matrix(1,:) 或类似方法一样?
【问题讨论】:
-
如何编写一些函数
getRow(...),使用您发布的代码但用于固定r?