Eigenで遭遇したエラー

'THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE'

エラー 11 error C2039: 'THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE' : 'Eigen::ei_static_assert<condition>' のメンバーではありません。 d:\myinclude\eigen\src\core\matrix.h 384
こんな時に起こった。

MatrixXf Km=MatrixXf::Zero(1,13);
VectorXf zero(3);
zero=VectorXf(Km(0,0),Km(0,4),Km(0,8));//ここがいけないそうだ。

okなコード

MatrixXf Km=MatrixXf::Zero(1,13);
VectorXf zero(3);
zero=Vector3f(Km(0,0),Km(0,4),Km(0,8));//ここがいけないそうだ。

VectorXfをVector3fにする。
Xはどうも不定という意味のようだ。

Assertion failed: row >= 0 && row < rows() && col >= 0 && col < cols()

範囲を超えたところをアクセスしようとしたときのエラーかな。
ちゃんと列だけの行列は、ベクトルで宣言した方がいい。

✖MatrixXf Km=MatrixXf ::Zero(1,13);
◯VectorXf Km=VectorXf::Zero(13);

デバッガでどこで配列超えしてるのか確認しよう。

'YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX'

✖VectorXf Km=MatrixXf::Zero(COEFNUM);

◯VectorXf Km=VectorXf::Zero(COEFNUM);

サポートサイト Wikidot.com