eigen相关内容

本征:绕轴W执行3D旋转并锚定在点P

我想创建一个接收角度的函数,两个矢量,其中一个是定义旋转轴方向的单位矢量,另一个是要旋转的矢量,一个定义锚点的点P旋转位置. 要在Eigen中实现此功能,我想我必须使用geometry模块,不幸的是,我认为该模块的文档并不完善,而且我无法理解. 我的想法是将旋转转换 AngleAxis 与两个转换结合起来,但是我不知道该怎么做.我只能这样定义旋转矩阵: Vector ..
发布时间:2021-05-03 20:10:15 C/C++开发

使用Eigen求解密集的,受约束的最小二乘拟合

对于大小为4的向量x,我需要解决形式为Ax = b的经典问题.A约为500个数据点,因此是一个密集的500x4矩阵. 目前,我可以使用此处中所述的普通方程式来解决此问题,并且工作正常但是我想将x中的参数之一限制为永远不超过特定值. 是否可以使用Eigen以编程方式执行此操作? 解决方案 您可以尝试基于Eigen 有.您仍然必须形成法线方程. ..
发布时间:2021-05-03 20:10:12 C/C++开发

矩阵列的本征减法向量

矩阵 linesP0 为3xN.我想从向量 planeP0 减去3x1.有没有更聪明,更快捷的方法来做到这一点? 现在我正在使用for循环.下面的示例代码: MatrixXf temp(linesP0.rows(),linesP0.cols());对于(int i = 0; i 我尝试使用 colwise(),但是没有用. 解决方案 您可以使用.colwise()来做到这一 ..
发布时间:2021-05-03 20:10:09 C/C++开发

如何传递本征矩阵行参考,将其视为向量?

我有一个可在Vector参考上运行的函数,例如 void auto_bias(const Eigen :: VectorXf& v,Eigen:Ref out){出= ...} ,在某个时候,我需要让此函数在Matrix行上运行.现在,由于默认的内存布局是基于列的,所以我不能仅仅将行所指向的数据映射到向量中.那么,如何将行传递到上面的函数中以便可以对 ..
发布时间:2021-05-03 20:10:06 C/C++开发

本征线性代数求解器似乎很慢

我想使用本征求解器求解线性代数方程Ax = b.在我的情况下,A是一个复杂的稀疏矩阵(26410 * 26410),b是一个实向量(26410 * 1). 我在MATLAB中使用mex文件将稀疏矩阵A和向量b映射为Eigen接受的格式.我之所以使用Eigen求解器,是希望它比使用 x = A \ b 在MATLAB中直接求解更快. 但是,在尝试了LDLT,SparseLU,CG和BiC ..
发布时间:2021-05-03 20:10:03 C/C++开发

从C ++返回Eigen :: Matrix数组到Python,无需复制

我有一些C ++代码可以生成和处理 Eigen 矩阵的数组.最后,我想在python中使用这些矩阵,并认为这可能是 pybind11 的工作. 基本上我想要在python中返回的是两个嵌套列表/numpy数组 mat_a(I,4,4)和 mat_b(J,K,4,4).因为我必须在C ++中做很多线性代数工作,所以我想使用Eigen,而我使用的数据结构是 std :: array ..
发布时间:2021-05-03 20:09:57 C/C++开发

性能:Matlab与C ++矩阵向量乘法

序言 前段时间,我问了一个关于Matlab与Python性能的问题(性能:Matlab与Python ).我感到惊讶的是Matlab比Python快,尤其是在 meshgrid 中.在讨论该问题时,有人指出我应该在Python中使用包装器来调用我的C ++代码,因为我也可以使用C ++代码.我在C ++,Matlab和Python中有相同的代码. 这样做的时候,我再次感到惊讶,发现Ma ..
发布时间:2021-05-03 20:09:54 C/C++开发

将Eigen :: MatrixXf转换为2D std :: vector

有没有比点对点复制值更优雅的解决方案了? 像这样的东西适用于一维矢量... vectorvec(mat.data(),mat.data()+ mat.rows()* mat.cols()); 我尝试了GCC编译器针对vector,但没有解决... 解决方案 Eigen :: MatrixXf 使用有效的线性内存,而 vector 为 vector ..
发布时间:2021-05-03 20:09:50 其他开发

在GPU上求解特征-CUDA

我最近使用 eigen 编写了一个C ++程序.但是我发现我较差的CPI无法处理较大的计算负载.我估计它至少需要一天的计算时间,而且我的时间很短,尤其是因为我可能还需要调试时间.我正在考虑使用GPU加速,但是我不知道如何使我的代码适应CUDA(或其他平台,但我更喜欢CUDA). 有没有便捷的方法可以将GPU加速应用于本征程序? 解决方案 cuSolver 是 NVIDIA 的线性代数 ..
发布时间:2021-04-27 20:13:56 C/C++开发

CMake发现本征不正确的结果

我正在尝试使用CMake使用 Eigen 编译代码段,但是CMake似乎很难找到正确的路径,即使源代码在那里. 这是我的 CMakeLists.txt 文件. cmake_minimum_required(版本3.14.2)项目(测试)#设置默认的构建类型如果(不CMAKE_BUILD_TYPE)设置(CMAKE_BUILD_TYPE版本)万一()find_package(需要OpenC ..
发布时间:2021-04-22 19:56:35 C/C++开发

在Clion CMake中包含本征库的问题

我的Eigen库有问题.我在Linux上使用Clion,但我的项目找不到Eigen库(我在桌面上的文件夹中). 我有两种配置的CMake: 第一: cmake_minimum_required(版本3.15)项目(TestFEM)设置(CMAKE_CXX_STANDARD 17)设置(EIGEN_DIR“〜/Desktop/eigen-3.3.7")include_director ..
发布时间:2021-04-22 19:48:15 服务器开发

使用Rcpp和typedef进行编译时出错

我正在使用RcppEigen为我的R包编写一些C ++组件,在这种情况下使用typedef遇到了麻烦.以下代码无法编译: //[[Rcpp :: depends(RcppEigen)]]#include使用命名空间Rcpp;typedef Eigen :: ArrayXd MapAr1;//[[[Rcpp :: export]]MapAr1 myFun(const M ..
发布时间:2021-04-19 20:02:52 C/C++开发

std :: vector的对齐问题

我终于遇到了这里描述的烦人的问题: https://eigen.tuxfamily.org/dox/group__TopicStlContainers.html 我有一个包含几个本征固定大小矩阵的结构,并且我想将我的结构的几个实例存储在std :: vector中.因此很明显,“这些问题仅发生在固定大小的可矢量化特征类型和以此类特征对象为成员的结构中."适用.但是,仅描述了如何使用直接收集本 ..
发布时间:2021-04-19 19:48:57 C/C++开发

特征中的Typedef与类中的Typedef

我正在浏览Eigen源代码以用于教育目的.我注意到,对于层次结构中的每个具体的类模板 X ,都有一个 internal :: traits 定义.一个典型的例子可以在Matrix.h中找到: 命名空间内部{模板结构特征 ..
发布时间:2021-04-19 19:14:13 C/C++开发

本征:可修改的自定义表达式

我正在尝试使用Eigen实现可修改的自定义表达式,类似于此问题。基本上,我想要的是与教程中的索引示例相似的东西,但是为选定的系数分配新值的可能性。 正如上面提到的问题中公认的答案所示,我研究了 Transpose 的实现,并尝试了许多事情,但没有成功。基本上,我的尝试失败了,并出现如下错误:'Eigen :: internal :: evaluator :: eva ..
发布时间:2020-10-27 23:57:05 C/C++开发

用特征值求解最小二乘方程的正确方法是什么?

我有以下简单的示例执行最小二乘,但出现以下断言错误。 断言失败:(i> = 0)&& ((((BlockRows == 1)&& (BlockCols == XprType :: ColsAtCompileTime)&& i 什么是正确的方法吗? typedef Eigen :: ArrayXd arr; typedef Eigen :: ArrayXXd arr2; ..
发布时间:2020-10-27 23:56:59 C/C++开发

使用Eigen修改null表达式的值

我确实想在Eigen3中编写一个可修改的自定义null表达式。如本征文档所述,似乎nullary表达式不可修改。有没有一种简单的方法来获得可修改的自定义nullary表达式? 我想用它来编写自定义数据包装器。 解决方案 Nullary表达式确实是只读的。对于读写表达式,您当前必须编写自己的表达式。为此,您可以从教程开始,并从实现Eigen中的转置表达式。 ..
发布时间:2020-10-27 23:56:57 C/C++开发