草庐IT

eigen_scope

全部标签

javascript - 指令 'scope' 中需要值属性

我正在经历创建指令的过程。在经历了一些起伏之后,我完成了创建指令(widget)并最终确定指令将采用的各种属性。我使用了各种可用的选项,如属性、绑定(bind)、评估、表达式等。我的想法是,如果您想创建一个通用组件,您永远无法知道人们将如何将值传递给该组件。这是一个例子...你正在创建一个新的元素组件..说hello的name属性是其中唯一的变量。如果您将其公开……这些是人们可能会使用此组件的场景。案例1:案例2:案例3:现在..针对不同的场景..我已经开始了解所提供的各种选项。我想不出一个场景,你会想要“属性”,因为它是从组件到模板的值的简单直接替换..在您的指令定义中,如果您将名称

c++ - 包含 Eigen 时的多个定义

我刚开始使用Eigen,但遇到了多重定义问题。我已经找到了确切的问题,这里是一个最小的例子。作品://Filecommon1.hpp#include//Filecommon2.hpp#include"common1.hpp"//Filemain.cpp#include"common2.hpp"clang++main.cpp用这个编译。不起作用://Filecommon1.hpp#include//Filecommon2.hpp#include"common1.hpp"//Filecommon2.cpp#include"common2.hpp"//Filemain.cpp#include

c++ - 为什么我不能从函数返回 Boost::Scoped_ptr?

所以我尝试围绕boost.extension函数创建一些包装器来创建类。所以我创建了一个函数:templateboost::scoped_ptrget_class(shared_library&lib,std::stringclass_name,ConstructorTypevalue){map>lib_factories=get_factories(lib);returnboost::scoped_ptrlib_class(lib_factories[class_name].create(value));}调用:templatemap>get_factories(shared_lib

c++ - Eigen 线性代数求解器似乎很慢

我想使用Eigen求解器求解线性代数方程Ax=b。在我的例子中,A是一个复杂的稀疏矩阵(26410*26410),b是一个实vector(26410*1)。我在MATLAB中使用mex文件将稀疏矩阵A和vectorb映射到Eigen可接受的格式。我使用Eigen求解器的原因是希望它比直接在MATLAB中使用x=A\b求解更快。然而,在尝试了LDLT、​​SparseLU、CG和BiCGSTAB之后,我发现结果并不是很令人满意:LDLT需要1.462秒,norm(A*x-b)/norm(b)=331;SparseLU用1.5193e-4耗时37.994s;BiCGSTAB以4.5977e

c++ - 如何在 Eigen 中表示紧凑等距变换矩阵?

我有一堆等距[R|t]变换矩阵,即它们是3D刚性变换。目前我将它们存储为Eigen仿射transformations,以紧凑形式表示,例如Eigen::AffineCompact3d它不存储冗余的最后一行[0001]。我也知道有一个Eigen::Isometry3d我猜这是Transform的typedef.我在Isometry之后,因为逆变换(转置)比一般的仿射逆要便宜得多。我也知道,当我将inverse()用作affine_mat.inverse(Eigen::Isometry);时,我可以传递一个提示。但我希望无需每次都手动传递提示即可获得等距逆行为。换句话说,我想知道复制Eig

c++ - Eigen 中的矩阵乘法非常慢

我已经实现了高斯-牛顿优化过程,该过程涉及通过求解线性化系统Hx=b来计算增量。H矩阵由H=J.transpose()*W*J计算,b由b=J计算。transpose()*(W*e)其中e是误差vector。这里的Jacobian是一个n×6矩阵,其中n以千为单位并且在迭代过程中保持不变,W是一个n×n对角权重矩阵,它将在迭代过程中发生变化(一些对角元素将是设置为零)。但是我遇到了速度问题。当我不添加权重矩阵W时,即H=J.transpose()*J和b=J.transpose()*e,我的高斯-牛顿过程可以在0.02秒内非常快地运行30次迭代。但是,当我添加在迭代循环外定义的W矩阵时

c++ - `unique_lock`、 `scoped_lock` 和 `lock_guard` 中指定的 mutex_type 的用例是什么?

用于保护std::mutex的c++11mutexRAII类型都有一个typedef:typedefMutexmutex_type;std::lock_guard::mutex_typestd::unique_lock::mutex_typestd::scoped_lock::mutex_type这个成员typedef有什么意义?起初我认为它可以用来概括创建一个对象来移动锁(在unique_lock的情况下)例如:templatevoidfunction(SomeLockin)SomeLock::mutex_typenewMutex;//Dosomething但我无法想象它的用途。需要

c++ - 对于矩阵乘法,Eigen + MKL 比 Matlab 慢

我在C++程序中进行了大量矩阵乘法运算,我使用与英特尔的MKL(2018.3.222)链接的Eigen(3.3.5)。我使用MKL的顺序版本并且OpenMP被禁用。问题是它比Matlab慢。一些示例代码:#defineNDEBUG#defineEIGEN_USE_MKL_ALL#include#include#includeusingnamespaceEigen;usingnamespacestd;intmain(){MatrixXdjac=100*MatrixXd::Random(10*1228,2850);MatrixXdres=MatrixXd::Zero(2850,2850);

c++ - 编写新的 Eigen 表达式

我正尝试根据最新文档编写新的Eigen表达式https://eigen.tuxfamily.org/dox-devel/TopicNewExpressionType.html.基本上,我想要的是Eigen中仍然缺少的reshape功能的一部分。所以chop_expr(此处为特征向量表达式)应该将输入vectorreshape为n次矩阵。不幸的是,我实现的不适用于分配在堆上的表达式,例如下面的代码不起作用,但在将MAXV更改为10后,一切都变得完美。另一个问题是关于enum{Flags=EvalBeforeNestingBit}我发现我需要它,否则,当我切碎矩阵乘法时,Eigen不会创建

c++ - Eigen :返回对具有编译时维度检查的矩阵 block 的引用

我要问的是thisquestion的概括.具体来说,我想围绕使用2D数据结构的遗留C和Fortran库制作一个C++Eigen包装器:[x[0,0]...x[0,w-1]][u[0,0]...u[0,w-1]][...][x[c-1,0]...x[c-1,w-1]][u[c-1,0]...u[c-1,w-1]]其中每个条目x[i,j]和u[i,j]本身都是大小为(nx1)和(mx1)分别。这会导致一些复杂(且容易出错)的指针算法以及一些非常难读的代码。因此,我想编写一个Eigen类,其唯一目的是尽可能轻松地提取该矩阵的条目。在C++14中,它看起来像这样data_getter.h:#i