eigen相关内容

稀疏特征矩阵子集列

我想取一些稀疏矩阵的子集列(列为主) 据我所知,在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++开发

如何将旋转矩阵转换为四元数

我可以将旋转矩阵转换为四元数吗? 我知道如何将四元数转换为旋转矩阵,但我找不到相反的方法。 我可以向您展示如何将四元数转换为旋转矩阵的代码,如下所示。 示例(C++):Quaterniond quat; MatrixXd t; t = quat.matrix(); 我想知道像这样把旋转矩阵转换成四元数的方法。 推荐答案 将方向余弦矩阵D转换为四元数Q的数值稳定算法如下: T = ..
发布时间:2022-07-19 21:34:32 其他开发

本征中的自定义标量类型

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

简单LLT返回错误的Cholesky因子

我想使用Eigen计算稀疏矩阵的Cholesky分解。然而,结果是不正确的,我找不到原因。如何获得正确答案? 在Eigen中是否实现了特殊的例程来利用稀疏矩阵的结构来提高性能(例如,对于下例中的带状矩阵或三角矩阵)? #include #include #include int main() { ..
发布时间:2022-07-19 21:11:10 C/C++开发

从多个线程调用Eigen SimplicialLLT时,结果不正确

我正在尝试使用SimplicialLLT来计算SparseMatrix。由于我的程序在循环中运行,并且每个稀疏矩阵都不同,因此我尝试按如下方式并行化对SimplicialLLT的调用。这不是确切的运行代码。我已尝试复制进行调用的部分。 #include #include #include "Eigen/Core" #include "Eigen/LU ..
发布时间:2022-05-11 09:14:59 C/C++开发

Eigen图书馆中的Eigensolver

我想用本征库将[vec,val] = eig(A)从MatLab翻译成C++,但我达不到同样的结果! 我尝试了eigensolver、ComplexEigenSolver和SelfAdjointEigenSolver.,但都没有给出像eig(A)这样的结果。 Sample matrices: Tv(:,:,223) = 0.8648 -1.9658 -0.2785 - ..
发布时间:2022-05-11 09:00:18 C/C++开发

特征中的元素最大值和正部分

我想取本征中两个向量/矩阵的元素最大值。到目前为止,我已经编写了以下代码: template auto elemwise_max(const S & A, const T & B) { return (A.array() > B.array()).select(A, B); } 这样做正确吗,或者这样做有更好的方法吗? 对 ..
发布时间:2022-05-10 23:52:28 C/C++开发

始终返回相同矩阵的随机矩阵

我刚刚玩弄了一下Eigen,注意到MatrixXf::Random(3,3)总是返回相同的矩阵,第一个总是这样例如: 0.680375 0.59688-0.329554 -0.211234 0.823295 0.536459 0.566198-0.604897-0.444451 这是故意的行为,还是我只是在监督一些非常简单的事情?(我使用数学库的经验几乎为零) 我使用的代码: ..
发布时间:2022-05-10 23:21:14 C/C++开发

从指标向量中提取子矩阵的特征

我已经用谷歌搜索了一段时间,但还是找不到这个简单问题的答案。 在MatLab中,我可以这样做: rows = [1 3 5 9]; A = rand(10); B = A(rows, : ); 如何在Eigen中执行此操作?这似乎不太可能。我找到的最接近的东西是 MatrixXd a(10,10); a.row(1); ,但我希望获得多行/多列。另一位用户在这里也问了这 ..
发布时间:2022-05-10 23:12:33 C/C++开发

将特征矩阵转换为三元组形式C++

我认为Eigen使用压缩方法存储稀疏矩阵。有没有什么方法可以从STD::Vectors中提取特征稀疏矩阵的三元组格式的向量? 谢谢。 详细信息(三元组格式示例) 矩阵的三元组格式: A= 3 0 4 0 0 0 1 0 0 2 0 5 4 0 0 0 i = 1 1 2 3 3 4 // row j = 1 3 3 2 4 1 // column S = 3 4 1 2 5 ..
发布时间:2022-04-13 09:52:47 C/C++开发

在 C 项目中使用 Eigen

我正在做一个从 Internet 获得的 C 项目,我正在尝试向项目中添加一些涉及线性代数的函数.在我之前的 C++ 工作中,我通常依赖 Eigen 进行线性代数. 有没有办法将 Eigen 用于 C 项目?如果是,我应该怎么做才能使它起作用?(仅仅添加 Eigen 头文件是不够的,例如标准 C++ 文件不会自动包含在内) 解决方案 Eigen 是一个库,它大量使用了 C++ 中没有 ..
发布时间:2022-01-25 19:00:00 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++开发