用Stride计算Eigen :: Map的SVD

时间:2019-02-26 16:25:44

标签: c++ eigen svd

我正在尝试计算 Eigen :: Map 的SVD。例如,此代码适用于之前定义的某些 matPointer

...
Eigen::Map<MatrixXd> eMat(matPointer,m_nRow,m_nCol);
Eigen::BDCSVD<MatrixXd> svdVal(eMat, Eigen::ComputeThinU | Eigen::ComputeThinV);
....

但是如果我想向 Eigen :: Map 添加 Stride ,则此代码会出现细分错误

...
typedef Eigen::Stride<Eigen::Dynamic, Eigen::Dynamic> DynStride;
Eigen::Map<MatrixXd,0, DynStride> eMat(matPointer,m_nRow,m_nCol, DynStride(jumpX,jumpY));
Eigen::BDCSVD<MatrixXd> svdVal(eMat, Eigen::ComputeThinU | Eigen::ComputeThinV);
...

我验证了 m_nRow,m_nCol,jumpX,jumpY 之间的兼容性,并且没有问题。我是否需要将 Eigen :: BDCSVD 中的 MatrixXd 更改为其他内容才能获得第二个代码段的工作?

0 个答案:

没有答案