私は私が行列を割り当てるしようとしています次C++の多次元固有値に値を代入するには?
res(0,0)(0) = 1;
として値にアクセスして割り当てることができ、次の
Eigen::Matrix<Eigen::VectorXd, Eigen::Dynamic, Eigen::Dynamic> res = Eigen::Matrix<Eigen::VectorXd, Eigen::Dynamic, Eigen::Dynamic>::
Constant(10,
10,
Eigen::VectorXd::Zero(3));
として定義され、スカラー型などのベクターと固有値行列を持っています以下、次の
res(all_rows,all_cols)(0) = matrix
、各第3のインデックスは、自分のコード
でありますint main()
{
Eigen::Matrix<Eigen::VectorXd, Eigen::Dynamic, Eigen::Dynamic> res = Eigen::Matrix<Eigen::VectorXd, Eigen::Dynamic, Eigen::Dynamic>::
Constant(10,
10,
Eigen::VectorXd::Zero(3));
Eigen::MatrixXf x = Eigen::MatrixXf::Ones(10, 1)*2;
Eigen::MatrixXf y = Eigen::MatrixXf::Ones(10, 1);
Eigen::MatrixXf product = Eigen::MatrixXf::Zero(10, 10);
MatrixXd m(2, 2);
res(0, 0)(0) = 1;
m(0, 0) = 3;
m(1, 0) = 2.5;
m(0, 1) = -1;
m(1, 1) = m(1, 0) + m(0, 1);
product = x*y.transpose();
res.block(0,0,10,10)(0) = x*y.transpose();
}
しかし、私は、コードをコンパイルしようとすると、この行はエラー
res.block(0,0,10,10)(0) = x*y.transpose();
私は、次の次のエラーを取得していますを与えています。
Error C2338 THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS
これを克服する方法はありますか、私のアプローチを変えるべきですか?
すべての固有の利点(ベクトル化スカラ演算、(行、列)(チャンネル)などのような無奇妙なアクセスパターン)を取得しますEigen :: VectorXdである10x10ブロックのテンソルタイプを探しているようです。 – cassinaj
Eigen :: VectorXdをスカラーとして使用する場合は、いくつかのスカラー演算を定義する必要があります。より良いオプションは、ランク3のEigen :: Tensor、または通常のスカラー(あなたの場合はダブル)のサイズ(3、幅*高さ)のフラット化された行列を使用することです – iNFINITEi