c - 如何从 C 中的列主矩阵中提取 vector ?

标签 c matlab matrix

来自 MATLAB 背景,我经常使用奇特的矩阵操作命令,例如 vec = matrix(:,1)用于提取,例如 matrix 的第一列作为载体。

将一些代码移植到 C 并需要将其与 FORTRAN 和 MATLAB 接口(interface),现在我可以将矩阵存储在具有列优先顺序的一维数组中。

所以基本上,我正在使用宏

#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
    }
}

为了访问相应的矩阵。现在,我的问题是:如何有效地从 matrix 中提取列或行 vector ?在 C 的这个框​​架内,就像我在 MATLAB 中使用 matrix(:,1) 或 matrix(1,:) 或类似的一样?

最佳答案

假设您要提取第 2 列并为其命名 ex_col:

int ex_col[];

for (size_t x=0; x<ROWS; x++)
{
size_t index = SUB2IND_2D(ROWS, COLS, x, 2); // fix column to 2 and extract all rows
ex_col[x] = matrix[index];
}

现在你可以将它概括为一个函数

关于c - 如何从 C 中的列主矩阵中提取 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781160/

相关文章:

c - C中的二叉树插入

c - 返回函数指针类型

用于按值绘制线图颜色的 matlab colorbar

matlab - 如何在for循环中更新计数器变量

r - 通过循环从数据帧填充矩阵

c - C 中的嵌套函数

创建双向通信 fifo

C vs MATLAB(制作一个元素为均匀分布的随机数的矩阵)

c# - 遍历以邻接矩阵表示的图

javascript - 找到矩阵变换的旋转和倾斜