子集犰狳场
subset Armadillo field
如果我没理解错的话,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 只是一个二维字段,因为您只在构造函数中指定了行和列。要访问矩阵 B 和 C,您可以改为使用:
arma::field<arma::mat> G=F.subfield(1,0,2,0);
或:
arma::field<arma::mat> G=F.rows(1,2);
有关子字段视图的更多信息,请访问 this page。
如果我没理解错的话,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 只是一个二维字段,因为您只在构造函数中指定了行和列。要访问矩阵 B 和 C,您可以改为使用:
arma::field<arma::mat> G=F.subfield(1,0,2,0);
或:
arma::field<arma::mat> G=F.rows(1,2);
有关子字段视图的更多信息,请访问 this page。