特征SVD双重演员

时间:2017-06-06 10:02:49

标签: eigen

我试图使用EIGEN库。特别是我使用SVD。

计算奇异值后,我需要执行此操作:

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

是由标量潜入的矢量。

我的问题是:

1)为什么这个操作给了我:

  

main.cpp:149:56:错误:'operator /'不匹配(操作数类型是   'const SingularValuesType {aka const Eigen :: Matrix}'和   'Eigen :: DenseBase> :: ConstRowXpr {aka   const Eigen :: Block,1,1,false>}')

2)如何将svd.singularValues().row(1)中包含的值复制到标准" double"变量?

1 个答案:

答案 0 :(得分:1)

请注意,svd.singularValues().row(1)不是标量,而是1x1矩阵,这就是您的代码无法编译的原因。解决方案:

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

并且还注意到像往常一样在C / C ++中,Eigen的矩阵和向量是基于0的索引,所以如果你想用最大的奇异值进行归一化,你应该这样做:

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