eigen3相关内容

稀疏特征矩阵子集列

我想取一些稀疏矩阵的子集列(列为主) 据我所知,在Eigen中有indexing个东西。 但我不能为稀疏矩阵调用它: Eigen::SparseMatrix m; std::vector indices = {1, 5, 3, 6}; // error: type 'Eigen::SparseMatrix' does not provide a ca ..
发布时间:2022-08-12 19:06:56 C/C++开发

本征中的自定义标量类型

我目前正在尝试设置一个定制标量类型,以用于特征3库(ATM它是double的一个简单包装器)。据我所知,我已经遵循了https://eigen.tuxfamily.org/dox/TopicCustomizing_CustomScalar.html,基本的事情运行得很好。 我需要用我的定制类型解决矩阵的特征值问题,而这正是事情开始崩溃的地方。我的编译器向我发出以下错误消息: /Eige ..
发布时间:2022-07-19 21:24:51 C/C++开发

将 GDB 与 Eigen C++ 库一起使用

我正在使用可从 http://eigen.tuxfamily.org/ 下载的 Eigen C++ 库.这是一个 C++ 库,用于更轻松地处理矩阵和数组.我使用 g++ 编译器和 gdb 进行调试.但是,我发现在使用 gdb 时我无法打印 Matrix 的内容(由 Eigen 提供). 解决方案 你必须安装一个 gdb 扩展,你可以在 eigen/debug/gdb/. 文件开头的注 ..
发布时间:2022-01-20 20:41:24 C/C++开发

正确使用 Eigen::Ref>班级

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

无法使用 CMake 找到 Eigen3

我有点绝望:对于我的学习,我需要使用 Eigen 和 CMake.如果我将整个库复制到编译器默认查找的目录中,但一旦我尝试通过 找到它,我就可以使用 Eigenfind_package(Eigen3 REQUIRED) 我收到以下错误: /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake 处的 CMake 错误:148(消 ..
发布时间:2021-12-26 21:46:50 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 其他开发

“不支持/Eigen/CXX11/Tensor:没有这样的文件或目录"在使用 TensorFlow 时

我正在尝试在我的 C++ 应用程序中使用 tensorflow 作为外部库(主要遵循 本教程).到目前为止我做了什么: 我已经克隆了 tensorflow 存储库(假设存储库根目录是 $TENSORFLOW) 运行 /.configure(所有设置默认,所以没有 CUDA,没有 OpenCL 等). 使用 bazel build -c/opt//tensorflow:libtensorf ..
发布时间:2021-09-05 19:13:36 C/C++开发

如何将 2D Eigen::Tensor 更改为 Eigen::Matrix

看起来很简单.我原以为可以进行某种类型的转换,但我似乎找不到任何相关文档. 虽然我在我的应用程序中找到了避免使用 Eigen::Matrix 类的方法,但 TensorFlow 仅适用于 Eigen::Tensor,而我使用的另一个库仅具有直接使用 Eigen::Matrix 的功能.如果我可以将张量转换为矩阵并使用它,那么代码可读性将非常棒. 编辑:似乎 TensorFlow 确实有 ..
发布时间:2021-09-05 18:56:47 其他开发

如何在 Eigen3 中重塑张量?

我从 C++ 中的 tensorflow 会话的输出向量中得到了一些 Eigen::TensorMap.我想对 Eigen::TensorMap 做一些操作(reshape 和 concat 等). 但是,由于一些奇怪的错误,我的代码无法编译.我试图用纯 Eigen3 代码重现它. #include 使用本征::张量;使用 Eigen::TensorMap;使用 Eigen::Tensor ..
发布时间:2021-09-05 18:34:25 C/C++开发

Eigen::Tensor,如何从张量访问矩阵

我有以下特征张量: Eigen::Tensor米(3,10,10); 我想访问第一个矩阵.在 numpy 我会这样做 m(0,:,:) 我将如何在 Eigen 中执行此操作 解决方案 您可以使用 .slice(...) 或 .chip(...) 访问张量的一部分.这样做是为了访问第一个矩阵,相当于 numpy m(0,:,:): Eigen::Tensor米(3,10,10);/ ..
发布时间:2021-09-05 18:33:24 C/C++开发

本征C++;就地矩阵乘法

使用 Eigen C++ 矩阵库,如何有效地将 n x n 矩阵 A 乘以 n x m 矩阵 B并将结果存储在 A 中?也就是说,我怎样才能避免生成一个临时的 n x m 矩阵并存储结果直接在B? 对于 m 非常大的应用程序(例如 100000)比 n(例如 3),这绝对有意义,因为它避免了超大数组的应用. 以下代码,我无法开始工作: B.noalias() = A * B; 我 ..
发布时间:2021-06-15 19:29: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++开发

在Eigen3中实现Bartels–Stewart算法?

过去当我需要解 Sylvester 方程时,AX + XB = C,我使用了 scipy 的函数,solve_sylvester [1],显然是通过使用Bartels-Stewart算法将事物分解为上三角形式,然后使用 lapack 求解方程来实现的. 我现在需要使用 eigen 求解方程. eigen 提供了一个函数 matrix_function_solve_triangular_syl ..
发布时间:2021-05-29 20:54:01 其他开发

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

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

在std向量中将元素分配给Eigen :: Vector2d会引发错误

我浏览了几篇StackOverflow帖子,但是没有发现这样的错误.我试图编写一个简单的类,对本征向量和矩阵进行一些操作.我创建了一个名为MyClass的类,它有一个名为MyMethod的方法.它的代码如下 void MyClass :: MyMethod(Eigen :: Vector4f X,std :: vector& pixelIndices,s ..
发布时间:2021-05-03 20:11:17 C/C++开发

避免在使用Eigen分解稀疏矩阵上进行动态内存分配

在我的应用程序中,除类构造函数外,我需要避免动态内存分配(类似malloc).我有一个稀疏的半定矩阵M,其元素在程序执行过程中会发生变化,但它具有固定的稀疏性模式. 为了尽可能快地求解许多线性系统M * x = b,其想法是在类构造函数中使用就地分解,如 cs_symperm_noalloc 是CSparse库的 cs_symperm 函数的次要重构. 这似乎行得通,至少与我的特 ..
发布时间:2021-05-03 20:11:00 C/C++开发