Armadillo油田的子集

subset Armadillo field

本文关键字:子集 Armadillo      更新时间:2023-10-16

如果我理解正确,Armadillo中的字段就像任意对象的列表。例如,一组不同大小的矩阵,或者矩阵和向量。在文档中,我看到了可以与slices一起使用的类型cube,因此您可以使用它们进行子集设置。然而,似乎没有具体的方法来对字段进行子集设置。

我的代码的简化版本是:

arma::mat A = eye(2,2);
arma::mat B = eye(3,3)*3;
arma::mat C = eye(4,4)*4;
arma::field<arma::mat> F(3,1);
F(0,0) = A;
F(1,0) = B;
F(2,1) = C;
// to get matrices B and C
F.slices(1,2);

但是得到错误

Error: field::slices(): indicies out of bounds or incorrectly used

首先,您提交的代码中有一个小错误:

F(2,1) = C;

我想应该是:

F(2,0) = C;

其次,函数slices()仅对3D字段有效。但是,字段F只是一个2D字段,因为您只在构造函数中指定行和列。要访问矩阵B和C,您可以使用:

arma::field<arma::mat> G=F.subfield(1,0,2,0);

或:

arma::field<arma::mat> G=F.rows(1,2);

有关子字段视图的更多信息,请访问此页面。