eigen相关内容

Eigen - 旋转矩阵的重新正交化

在乘以大量旋转矩阵后,由于舍入问题(去正交化),最终结果可能不再是有效的旋转矩阵 重新正交化的一种方法是按照以下步骤操作: 将旋转矩阵转换为轴角表示(链接) 将轴角转换回旋转矩阵(链接) Eigen 库中是否有一些东西通过隐藏所有细节来做同样的事情?或者有没有更好的食谱? 由于特殊的奇点情况,这个过程必须小心处理,所以如果 Eigen 提供了一个更好的工具,那就太好了. ..
发布时间:2022-01-16 14:44:34 其他开发

正确使用 Eigen::Ref>班级

Eigen 引入了 Ref 类来编写带有 Eigen 对象作为参数的函数,而不需要使用不必要的临时变量,当不需要编写模板函数时.您可以在此处阅读有关此内容的信息. 在 Internet 上进一步搜索时,我发现使用 Ref 类声明了几种不同的参数.在 Eigen 文档中,他们使用 const Eigen::Ref& 作为第一个示例中的只读参数.在第二个例子中,Eigen::Ref 被引入用 ..
发布时间:2021-12-29 19:49:40 C/C++开发

在我的 Cmake 项目中使用 Eigen Lib?

我在我的 CMake 项目中使用仅标头库 (Eigen) 时遇到困难.当我删除与 Eigen 库相关的所有部分时,它会编译,但不确定如何使用 (Eigen) 进行构建.请注意,Eigen 在 Eigen 文件夹中有一个 CmakeLists.txt,它有/src 文件夹,其中包含与矩阵运算等相关的(*.h 和 *.cpp)... 我的程序结构如下 Myproject(文件夹)由: ..
发布时间:2021-12-26 22:07:27 C/C++开发

为 CMake 查找包 Eigen3

CMake 找不到我的 Eigen3 包.我设置了一个名为 的环境变量 EIGEN3_INCLUDE_DIR 指向FindEigen3.cmake所在的路径. 然后在 CMakelists.txt 中我写道: find_package( Eigen3 REQUIRED )包含目录(EIGEN3_INCLUDE_DIR) 我收到下一条错误消息: CMake 错误在 C:/Progr ..
发布时间:2021-12-26 21:36:13 其他开发

使用 Boost::odeint 和 Eigen::Matrix 作为状态向量

我正在尝试利用 ODE 集成功能Boost 使用 Eigen 3 中的矩阵类 作为我的状态向量,但我遇到了问题深入到我不知道如何解决的 Boost. 我正在尝试做的一个最小的例子: #include #include #include 使用命名空间特征;使用命名空间 boost::numeric::odeint;模板使用向量=矩阵<double,N,1>;typedef向量 3状态;int ..
发布时间:2021-12-24 15:34:22 C/C++开发

与 int by int 相比,为什么执行 float by float 矩阵乘法更快?

有两个 int 矩阵 A 和 B,有超过 1000 行和 10K 列,我经常需要将它们转换为浮点矩阵以获得加速(4 倍或更多). 我想知道为什么会这样?我意识到浮点矩阵乘法有很多优化和矢量化,例如 AVX 等.但是,对于整数,有诸如 AVX2 之类的指令(如果我没记错的话).而且,不能将 SSE 和 AVX 用于整数吗? 为什么在矩阵代数库(例如 Numpy 或 Eigen)下没有启发 ..
发布时间:2021-12-19 08:10:27 C/C++开发

OpenCV CV::Mat 和 Eigen::Matrix

是否有一种可逆的方法可以将 OpenCV cv::Mat 对象转换为 Eigen::Matrix 对象? 例如,某种方式: cv::Mat cvMat;特征::矩阵eigMat;相机->检索(cvMat);//将 cvMat 转换为 eigMat 的魔法//在 eigMat 上工作//将 eigMat 转换回 cvMatimshow("Image", cvMat); 我已经尝试使用 cv ..
发布时间:2021-12-10 20:39:17 C/C++开发

将特征矩阵转换为 C 数组

Eigen 库可以将现有内存映射到 Eigen 矩阵. 浮点数组[3];Map(array, 3).fill(10);整数数据[4] = 1, 2, 3, 4;Matrix2i mat2x2(数据);MatrixXi mat2x2 = Map(数据);MatrixXi mat2x2 = Map(data, 2, 2); 我的问题是,我们如何从特征矩阵(例如 Matrix3f m)中获得 c 数 ..
发布时间:2021-11-18 02:39:35 C/C++开发

为 ARM 交叉编译时未初始化特征向量

我在使用 arm-linux-gnueabihf-g++(来自 Linaro 的 gcc 4.8 版)的交叉编译程序上使用 Eigen3.目标平台是来自gumstix 的duovero,使用Poky 发行版- ARMv7.当我使用 Eigen 代码运行程序时,我在 Eigen 对象上得到了非常奇怪的值(请参阅本文末尾的输出示例). 我试图关闭矢量化,我已经使用了所有这些标志 -marm-m ..
发布时间:2021-11-17 22:33:31 其他开发

C++ 特征:动态张量

我想实现一个 C++ 类,它有一个张量向量作为成员.张量的维度不是预定义的,而是根据一些输入数据取值.此外,张量的等级可以不同.像这样: std::vector我的张量; 在 Eigen,但是,动态张量没有这样的 TensorXd 类型. 为了构建每个张量,我将读取一个数据向量 std::vector;values 表示维度 n x n x ... x n(r 次)的张量.像这样: T ..
发布时间:2021-09-05 19:28:31 C/C++开发

在 ARM/Raspberry PI 上的多个内核上运行特征密集矩阵乘法时性能下降

我发现在 ARM 32 或 64 位 Raspberry PI 4 上并行运行 2 或 3 个线程上的特征密集矩阵乘法时,性能显着下降. 我无法理解这个问题,因为 RPI 4 有 4 个内核,理论上可以在真正的并行处理中处理多达 4 个线程.此外,我无法在我的笔记本电脑(英特尔 I9 4 核处理器)上重现该问题,无论我并行运行 1 个、2 个还是 3 个线程,每个线程都保持相同的性能. ..
发布时间:2021-06-04 20:39:25 C/C++开发

如何在Eigen中使用自定义预处理器

我正在尝试将自定义的预处理器用于Eigen的迭代求解器(例如CG).具体来说,我必须多次解决类似的问题:矩阵略有变化,但保持接近均值矩阵.我想计算我的均值矩阵的Cholesky分解,然后将其用作前置条件. 我的想法是这样的: ConjugateGradient求解器(mea ..
发布时间:2021-05-03 20:11:31 C/C++开发

如何用Odeint求解状态空间模型?

我正在尝试使用Eigen和Odeint对状态空间模型进行数值模拟.我的麻烦是,我需要引用控制数据 U (集成前预定义),以便正确解决状态的 Ax + Bu 部分空间模型.我试图通过使用计数器来跟踪当前时间步长来实现此目的,但是由于某种原因,每次Odeint调用系统功能时,它都会重置为零. 我该如何解决?我对状态空间系统建模的方法有缺陷吗? 我的系统 struct Eigen_SS_ ..
发布时间:2021-05-03 20:11:28 C/C++开发

制作矩阵的更好方法-Eigen中的对数运算?

我正在和Eigen一起使用矩阵和log/exp进行一些计算,但是我发现表达式有点笨拙(可能还会更慢?).有没有更好的方法来编写这样的计算? MatrixXd m = MatrixXd :: Random(3,3);m = m *(m.array().log()).matrix(); 也就是说,不必转换为数组,然后返回矩阵? 解决方案 如果您要混合使用数组和矩阵运算,就不能真正避免使 ..
发布时间:2021-05-03 20:11:25 C/C++开发