如何在犰狳 C++ 中修改矩阵中的某些列

Posted

技术标签:

【中文标题】如何在犰狳 C++ 中修改矩阵中的某些列【英文标题】:How to modify certain columns in a Matrix in Armadillo C++ 【发布时间】:2021-02-09 06:53:55 【问题描述】:

我在 Armadillo 10x10 矩阵中有一个非常简单的任务。 任务是将1,3,49 列的值更改为sqrt(2)

我已经完成了任务 使用(B 是唯一的)

B.cols(columns) *= sqrt(2);

我为每一列都做了这个并且工作了。

这里的问题是阅读文档可以使用

B.cols( vector of col indices )

我想学习如何使用它,但似乎没有任何效果

【问题讨论】:

你可以使用B.each_col(),见doc 没有用,问题是我不知道应该如何在参数中引入“VECTOR_OF_INDICES” 【参考方案1】:

将“列索引向量”声明为uvec,并将列索引放入其中。

mat B(10, 11, fill::randu);

uvec column_indices =  1, 3, 4, 9 ;

B.cols(column_indices) *= sqrt(2);

(需要说明的是,C++ 具有从零开始的索引,因此第一列的索引为 0,而不是 1)。

【讨论】:

以上是关于如何在犰狳 C++ 中修改矩阵中的某些列的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中存储大矩阵(犰狳)

C++:犰狳列矩阵初始化不明确

C ++犰狳重塑只有一维大小的矩阵

矩阵形成中的奇怪行为(C++,犰狳)

如何在犰狳中按元素划分2个稀疏矩阵?

修改矩阵后,通过内存指针(memptr)直接访问犰狳矩阵的条目不起作用