eigen 相关问题

Eigen是线性代数的C ++模板库:矩阵,向量和相关算法。

在 Eigen C++ 上使用单精度 (MatrixXf) 获取双精度 (MatrixXd) 答案

我在 pixhawk 硬件上编写了一个模型预测控制器来控制四轴飞行器的姿态(角度)。我与 pixhawk 的一位开发人员交换了消息,他建议我......

回答 1 投票 0

如何知道Eigen C++ Library中PlainObjectBase的类型?

我想知道函数内 Eigen::PlainObjectBase 变量的基本数据类型,最好是字符串。考虑以下示例: 模板 无效我的函数(

回答 1 投票 0

将特征矩阵存储在二进制文件中的通用函数

我知道下面的代码可以用来将数据类型为double的特征矩阵的数据写入二进制文件。 模板 void WriteEigenMatrix(const Eigen::Matrix 我知道以下代码可用于将数据类型为 double 的特征矩阵的数据写入二进制文件。 template<class T> void WriteEigenMatrix(const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& m, const char* fileName) { std::ofstream outFile(fileName, std::ios_base::out | std::ios_base::binary); outFile.write(m.data(), m.rows()*m.cols()); outFile.close();` } 如何概括此函数以接受其他特征数据类型(如 Eigen::Vector 和 Eigen::Array)作为输入? 如果我使用 Eigen::EigenBase,我知道该函数将接受所有此类数据类型。然而,问题是我不能再使用m.data(),因为它没有在基类中定义。 有什么建议可以解决这个问题吗? 如果您只想允许“密集”对象,您可以按如下方式操作: template<class Derived> void WriteEigen(const Eigen::DenseBase<Derived>& dense, const char* fileName) { std::ofstream outFile(fileName, std::ios_base::out | std::ios_base::binary); outFile.write(reinterpret_cast<const char*>(dense.derived().data()), dense.rows() * dense.cols()); outFile.close(); } 所有稠密矩阵(包括向量和数组)都继承自DenseBase,在derived上调用DenseBase将返回具体的矩阵类型。 或使用您喜欢的任何底座。

回答 1 投票 0

Eigen3 张量切片,无需复制数据

我一直在为一个新项目测试 Eigen3 的 Tensor 模块。 即使该模块尚未完成,它似乎也具有我需要的大部分功能。 但有一个部分我...

回答 2 投票 0

使用特征值快速计算平方范数和归一化向量

我的一段代码需要运行数百万次。看起来成本最高的部分是这个计算: Vector2d directInverseSquare(Vector2d &pos1, Vector2d &pos2)...

回答 1 投票 0

本征图的奇怪行为

当调用 Eigen::Map 内返回向量的函数时,映射会产生错误的结果。但是,如果首先分配向量并应用 Eigen::Map,则可以实现预期结果...

回答 1 投票 0

C++ 特征库:编写应用系数数学运算并适用于 ArrayBase 和 MatrixBase 的函数的最佳实践是什么?

想法1:编写一个带有DenseBase参数的函数 签名:模板 void foo(DenseBase param) 在函数体内:param.衍生().array() 想法2:写两个函数...

回答 1 投票 0

将特征矩阵映射到C++向量

我想将特征密集矩阵写入c++向量中。 我可以预先分配一个 C++ 向量,但似乎我不能在特征矩阵上做到这一点。 我需要预先分配,因为我有我的理由。所以我想...

回答 1 投票 0

进程设置为具有实时优先级,相同的操作需要虚假时间峰值

我必须执行一个时间紧迫且简单的操作(比方说一个简单的缓冲区移位)。我正在使用 C++ 和 Eigen 库。 平均时间还可以,完全符合我的要求。问题是...

回答 1 投票 0

如何在c++中使用eigen库导入矩阵市场文件

我是 C++ 新手,习惯使用 MATLAB。不幸的是,我的矩阵大小对于 MATLAB 来说太大了,所以我想在 C++ 中尝试一下。 我找到了 eigen 库 3.3.7 来进行矩阵操作。为此我需要

回答 4 投票 0

将转置矩阵或原始矩阵保留在同一变量中而不使用内存

我想编写以下函数: Eigen::MatrixXd func(const Eigen::MatrixXd &matrix1, bool condition1, const Eigen::MatrixXd &matrix2, 布尔条件2, ...

回答 2 投票 0

何时使用 Eigen::Vector 与 std::vector?

由于外部依赖,我需要在 Eigen::VectorXi 容器中写入一些数据。 但是,有时我不需要使用 en Eigen::VectorXi 作为容器,...

回答 1 投票 0

Eigen 库:返回表达式而不是向量本身

是否可以返回某种表达式,然后可以进一步使用和简化,而不是向量本身? 我有一个函数 Vector3 f(Vector3 const&, Vector...

回答 1 投票 0

使用 pybind11 进行特征矩阵参考(读/写)

这是一个类的实现,其中包含特征矩阵向量以及 python 绑定的定义。 #包括 #包括 #包括 这是一个类的实现,包含特征矩阵向量以及 python 绑定的定义。 #include <vector> #include <pybind11/eigen.h> #include <Eigen/Dense> #include <pybind11/pybind11.h> #include <pybind11/stl.h> namespace py = pybind11; using EMatrixDbl = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>; class MyMap { public: MyMap(int i, int j) { m_matrices.resize(1); m_matrices[0].resize(i, j); m_matrices[0].setZero(); } EMatrixDbl& operator[](int k) { return m_matrices[k]; } EMatrixDbl& get(int k) { return m_matrices[k]; } std::vector<EMatrixDbl> m_matrices; }; PYBIND11_MODULE(MyMapPy, m) { py::class_<MyMap> c(m, "MyMap"); c.def(py::init<int, int>()); c.def("get", &MyMap::get, py::return_value_policy::reference_internal); c.def("get_lambda", [](MyMap& self, int k){ EMatrixDbl& m_map = self[k]; return m_map; }, py::return_value_policy::reference_internal); } 当我使用绑定时,只有方法get允许编辑矩阵。 为什么get_lambda不能做到同样的事情? 如何直接绑定MyMap::operator[],提供绑定的可写接口? import MyMapPy m = MyMapPy.MyMap(3, 3) m.get(0)[0,0] = 1 m.get(0) # [0,0] is 1 m.get_lambda(0)[0,0] = 2 m.get_lambda(0) # [0,0] is always 1... lambda 函数返回类型被推导为 EMatrixDbl 而不是 EMatrixDbl&。最简单的解决方法是指定返回类型: [](MyMap& self, int k) -> EMatrixDbl& 结果 >>> m.get_lambda(0)[0,0]=2 >>> m.get(0) array([[2., 0., 0.], [0., 0., 0.], [0., 0., 0.]]) 更通用的方法是将返回类型指定为decltytpe(auto)请参阅此答案。

回答 1 投票 0

使用特征四元数映射映射具有不同存储顺序的C型四元数

我正在尝试使用 Eigen::Map 映射一个 C 样式数组,该数组在我的应用程序中表示一个组件存储顺序为 w、x、y、z 的四元数。问题在于内部特征

回答 1 投票 0

Odeint 错误:使用已删除的函数‘boost::numeric::odeint::state_wrapper<State<3>&, void>::state_wrapper()’

我正在尝试利用 Odeint 和 Eigen 用 C++ 编写一个通用积分器,但我一直在努力让 Odeint 对继承自 Eigen 的自定义状态向量类感到满意。为了证明...

回答 1 投票 0

Eigen:将每一行除以最后一行

使用 Eigen 的行操作时,我不太清楚其语法...... 我有一个特征矩阵,我想将每一行除以最后一行。所以如果我们从一个矩阵开始 r = [ ...

回答 3 投票 0

C++ 中从三个稠密 Eigen::MatrixXi 获取公共第一个零值索引

我有一个 NxN 非负 Eigen::MatrixXi 称为 cost_matrix,还有两个 Nx1 非负 Eigen::VectorXi 称为 rowVector 和 colVector。我想找到第一个索引 (i, j) 使得 cost_matrix(i,...

回答 1 投票 0

评估 C++ 中某个内容的大小(以字节为单位)

我有一个来自特征库的稀疏矩阵,定义为: Eigen::SparseMatrix MyMatrix(2**n, 2**n)。 另外我使用了函数reserve: MyMatrix.reserve(Eigen::VectorXi::Constant(2**...

回答 1 投票 0

是否可以根据数组中指定的值递归地对特征张量进行切片?

我正在尝试在 C++ 中围绕 Eigen::Tensor 对象创建一个包装器。这个想法是基于提供的数组在张量上创建一个碎片视图,该数组要么指定要碎片的行...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.