gpt4 book ai didi

c++ - 在 Eigen 中创建置换矩阵

转载 作者:行者123 更新时间:2023-11-28 05:32:17 35 4
gpt4 key购买 nike

我正在编写一个返回置换矩阵的函数。在里面,它做了这样的事情

PermutationMatrix<Dynamic> my_favourite_permutation () {
Eigen::Matrix<uint, Dynamic, 1> x {4, 3, 1, 2, 0};
PermutationWrapper<Eigen::Matrix<uint, Dynamic, 1>> p
= PermutationWrapper<Eigen::Matrix<uint, Dynamic, 1>> (x);
return p;
}

用例包括类似

auto p = my_favourite_permutation();
cout << p.toDenseMatrix() << endl;

不幸的是,上面的代码陷入了静态断言:

/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32: error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY
#define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);

有趣的是,如果不是 return p; 我做 return p.inverse(); 那么它就可以工作了

最佳答案

我对 Eigen 了解不多,但似乎 PermutationMatrix 默认为 uint 以外的其他类型的索引。如果要使用uint,则必须在返回类型的模板参数中指定它:

PermutationMatrix<Dynamic, Dynamic, uint> my_favourite_permutation() {
...
}

关于c++ - 在 Eigen 中创建置换矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39182148/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com