如何将整行写入犰狳矩阵?

How can I write entire rows into an Armadillo matrix?

提问人:exocortex 提问时间:4/3/2019 最后编辑:exocortex 更新时间:4/3/2019 访问量:3341

问:

在犰狳中,我想将许多行向量保存到矩阵中。我可以使用以下命令更改矩阵 A 的条目:

arma:mat A(10,10, 0); // create a 10x10 matrix filled with zeros.
A(i,j) = 1.23; // set element at positon (i,j) to 1.23.

有没有办法一次更改矩阵的整行?例如:

arma::rowvec V(10); // a row vector of length 10.
A(i) = V; //write entire rowvector V into matrix at position i.

我知道我可以使用 A.insert_rows(一、五); 将我的 Vector V 插入矩阵,但我想替换它。在我的代码中,我已经知道矩阵的维度。我还可以在 and 处附加行,但我在某处读到,如果我不更改矩阵的大小,而是用合适的大小初始化它,代码运行得更快。 如果有人感兴趣,我正在编写一个求解微分方程的程序,我需要将系统状态(向量)写入数组(犰狳矩阵)以保存时间序列。

我以为我可以使用犰狳矩阵,因为我的系统状态是犰狳向量。我在犰狳的文档中四处寻找,但我找不到合适的方法。(除了编写一个循环遍历我的向量的所有条目之外,其他任何正确含义 - 我知道 C++ 在内部做这样的事情,但我的猜测是使用犰狳函数会更快)。

C++ 犰狳

评论


答:

4赞 hbrerkere 4/3/2019 #1

使用子矩阵视图。一些例子:

arma::mat A(10,10, arma::fill::zeros);
arma::rowvec V(10, arma::fill::randu);

A.row(2) = V;
A.row(3).ones();
A.row(4).randu();
A.row(5).fill(123.4);

评论

0赞 exocortex 4/4/2019
谢谢!这非常非常有帮助!现在想想,这其实是那么明显。我可能不理解文档......