2

複数の Eigen::MatrixXd メソッドを使用するプログラムをコンパイルしています。コンパイル時にエラーは発生しませんが、実行すると次のエラーが発生します。

darwin-pi2: /usr/include/Eigen/src/Core/Assign.h:498: Derived& Eigen::DenseBase<Derived>::lazyAssign(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::Matrix<double, -1, -1>; Derived = Eigen::Matrix<double, 15, 15, 0, 15, 15>]: Assertion `rows() == other.rows() && cols() == other.cols()' failed.

固有行列の関係かと思いますが、意味がわかりませんAssertion rows() == other.rows() && cols() == other.cols()' failed

4

2 に答える 2

1

寸法は実行時に決定されるためEigen::MatrixXd、コンパイル時のサイズ チェックはすべて無効になり、実行時まで延期されます。

この場合、動的サイズの行列から 15x15 の行列に割り当てているように見えます。その動的なもののサイズを再確認してデバッグしてみてください。

于 2013-06-02T14:54:39.160 に答える
0

matlab では、行列のインデックスはm1 から始まりますが、固有値では 0 から始まります。簡単な例を示します。

#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
int main()
{
  MatrixXd m(2,2);
  m(0,0) = 3;  //  INDEX starts from 0, not 1
  m(1,0) = 2.5;
  m(0,1) = -1;
  m(1,1) = m(1,0) + m(0,1);
  std::cout << m << std::endl;
}

詳細については、ドキュメントをクリックしてください。

于 2016-07-02T03:47:45.150 に答える