Eigen 本征奇异值分解双投射

Eigen 本征奇异值分解双投射,eigen,Eigen,我正在尝试使用本征libs。特别是我正在使用SVD 计算奇异值后,我需要执行此操作: svd.singularValues()/svd.singularValues().row(1) 这是一个向量除以一个标量 我的问题是: 1) 为什么这次行动给了我: main.cpp:149:56:错误:“运算符/”不匹配(操作数类型为 “常数奇异值类型{aka const eignal::Matrix}”和 'Eigen::DenseBase>::ConstRowXpr{aka 常量特征值::块,1,1,

我正在尝试使用本征libs。特别是我正在使用SVD

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

svd.singularValues()/svd.singularValues().row(1)
这是一个向量除以一个标量

我的问题是:

1) 为什么这次行动给了我:

main.cpp:149:56:错误:“运算符/”不匹配(操作数类型为 “常数奇异值类型{aka const eignal::Matrix}”和 'Eigen::DenseBase>::ConstRowXpr{aka 常量特征值::块,1,1,false>}')


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

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

svd.singularValues()/svd.singularValues()(1)
还请注意,与C/C++中的常见情况一样,特征矩阵和向量是基于0的索引,因此,如果要通过最大奇异值进行规范化,应执行以下操作:

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