2017-06-06 3 views
0

私はEIGENライブラリを使用しようとしています。特に私はSVDを使用しています。固有SVDダブルキャスト

svd.singularValues()/svd.singularValues().row(1) 

スカラーによって潜っベクトルである:私はこの操作を実行する必要がある特異値の計算後

私の質問は以下のとおりです。

1)この操作は私を与える理由:

main.cpp:149:56: error: no match for ‘operator/’ (operand types are ‘const SingularValuesType {aka const Eigen::Matrix}’ and ‘Eigen::DenseBase >::ConstRowXpr {aka const Eigen::Block, 1, 1, false>}’)

2)どのように私は、標準的な "二重の" 変数にsvd.singularValues().row(1)に含まれる値をコピーすることができますか?

答えて

1

svd.singularValues().row(1)はスカラーではありませんが、の行列であり、コードがコンパイルされないことに注意してください。ソリューション:

svd.singularValues()/svd.singularValues()(1) 

ともはC/C++でいつものように、固有の行列やベクトルがインデックス0ベースであることに注意してください、あなたは最大の特異値で正規化したい場合は、実行する必要があります。

svd.singularValues()/svd.singularValues()(0)