如何在 Eigen 中初始化 SparseVector ?下面的代码:
#define EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET
#include <Eigen/Sparse>
using namespace Eigen;
SparseVector<float> vec(3);
main()
{
vec(0)=1.0;
}
给我以下错误
错误:在没有适当的operator()或将函数转换为指针函数类型的情况下调用类类型的对象
向量(0)=1.0;
顺便说一句, vec[0]=1.0 也不起作用。
查看我注意到的文档Scalar& coeffRef(Index i)
,它说:
返回给定索引 i 处的系数值的引用。此操作涉及 log(rho*size) 二分搜索。如果系数尚不存在,则执行到顺序缓冲区的排序插入。 (如果 i 上面的非零数很大,则此插入的成本可能会非常高。)
所以以下应该有效:
#define EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET
#include <Eigen/Sparse>
using namespace Eigen;
SparseVector<float> vec(3);
main()
{
vec.coeffRef(0)=1.0;
}
不知道为什么他们这样做而不是使用数组重载。也许当它变成 IS_STABLE 时,他们会以更典型的 C++ 方式来做?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)