如何将整行写入Armadillo矩阵?

时间:2019-04-03 12:20:39

标签: c++ armadillo

在Armadillo中,我想将许多行向量保存到矩阵中。我可以使用以下命令更改矩阵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(i,V); 将我的向量V插入矩阵,但是我想替换它。在我的代码中,我已经知道矩阵的尺寸。我也可以在和处附加行,但是如果我不更改矩阵的大小,而是使用正确的大小对其进行初始化,则我会读到代码运行速度更快的地方。 如果有人感兴趣,我正在编写一个解决微分方程的程序,我需要将系统状态(一个向量)写入一个数组(一个Armadillo矩阵)以保存时间序列。

我以为我可以使用犰狳矩阵,因为我的系统状态是犰狳向量。我浏览了Armadillo的文档,但找不到正确的方法。 (除了编写循环遍历我矢量的所有条目的循环外,其他所有含义都是正确的-我知道C ++在内部正在做类似的事情,但是我猜想使用犰狳函数会更快。)

1 个答案:

答案 0 :(得分:1)

使用submatrix views。一些例子:

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);