草庐IT

eigen_scope

全部标签

C++ eigen3 线性代数库,奇怪的性能结果

我在C++中使用eigen3线性代数库有一段时间了,而且我一直试图利用向量化的性能优势。今天,我决定测试矢量化到底能在多大程度上加快我的程序速度。因此,我编写了以下测试程序:---特征测试.cpp---#includeusingnamespaceEigen;#includeintmain(){Matrix4daccumulator=Matrix4d::Zero();Matrix4drandMat=Matrix4d::Random();Matrix4dconstMat=Matrix4d::Constant(2);for(inti=0;i然后我在用不同的编译器选项编译后运行这个程序:(结果

c++ - "Function not declared in this scope"编译openCV代码出错

我正在尝试编写一些使用openCV函数的代码。我从文档中提供的一些示例代码开始:#include#include#includeusingnamespacecv;usingnamespacestd;intmain(intargc,char**argv){if(argc!=2){cout当我尝试在Eclipse-CDT中构建它时,我得到了这个:****BuildofconfigurationDebugforprojectopenCV1****makeallBuildingtarget:openCV1Invoking:CrossG++Linkerg++-L/usr/local/lib-o"

c++ - 如何查找和替换 Eigen::Array 对象中的所有非有限数字?

假设我有一个用double填充的数组:Eigen::Arraymyarray;现在我想用数字0.0替换myarray的任何非有限元素,我该怎么做?我正在考虑将它乘以我发现无穷大的零值数组,如下所示:myarray*=myarray.cwiseEqual(std::numeric_limits::infinity())==0.0;并对每个无效类型执行此操作。但这真的很乱。有没有更好的办法? 最佳答案 这是一种简单的方法:myarray=myarray.unaryExpr([](doublev){returnstd::isfinite(

c++ - 如何在 Eigen 中翻译矩阵(4x4)?

如何在Eigen中翻译一个矩阵(4x4)?//identitymatrix4x4/*type=*/Eigen::Matrix/*name=*/result=Eigen::Matrix::Identity();//translationvector//3.0f//4.0f//5.0fTranslationtrans(3.0f,4.0f,5.0f);即,我有矩阵:1.00.00.00.00.01.00.00.00.00.01.00.00.00.00.01.0我想得到这个:1.00.00.03.00.01.00.04.00.00.01.05.00.00.00.01.0对吧?我该怎么做?我能做

c++ - Eigen 的 MATLAB find()/Numpy 非零习语

很可能这是一个非常愚蠢的问题,但我花了相当荒谬的时间在文档中寻找它,但无济于事。在MATLAB中,find()函数为我提供了一个包含非零元素索引的数组。Numpy的np.nonzero函数做类似的事情。我如何在C++Eigen库中执行此操作?我有一个bool数组typedeffoobar=MatrixA到目前为止。谢谢! 最佳答案 不确定这是否是您问题的一部分,但要构建适当的元素不等式结果,您必须首先将矩阵转换为数组:MatrixXdA,B;...MatrixC=A.array()现在C与A和B大小相同,并且C(i,j)=A(i,j

c++ - (C++) 错误 : 'invalid_argument' was not declared in this scope

我正在使用EclipseC/C++和MinGW编译器。我已将标志-std=c++11添加到项目属性中C/C++Build下的MiscellaneousGCCCCompilerSettings中。我知道这可能是一件简单的事情,但我无法解决此错误。Date.h#includeusingnamespacestd;classDate{public:Date(intm=1,intd=1,inty=1900);voidsetDate(int,int,int);private:intmonth;intday;intyear;staticconstintdays[];};日期.cpp#include#

c++ - C++ 中的 "Variable ' i ' was not declared in scope "是什么?

在练习C++代码时,我使用了在for循环中声明的变量。我希望它在另一个for循环中再次使用它。但它向我显示了一个错误,即variableiwasnotdeclaredinscope我在EclipseIDE中尝试了相同的循环thesymboliwasnotresolved.示例代码与此类似:#includeusingnamespacestd;intmain(){for(inti=0;i 最佳答案 您必须为每个范围声明变量:#includeusingnamespacestd;intmain(){for(inti=0;i在第一个循环之后,

c++ - Eigen 浮点精度

我在使用Eigen时遇到浮点精度问题。我有两个Eigen::MatrixXd;第一个矩阵A(nx1)仅包含正整数,而第二个矩阵B(nx1)包含填充相同实数的单个列(例如:-0.714312).我需要计算以下Eigen::MatrixXd:constautoexponential=[](doublex){returnstd::exp(x);};MatrixXdW=B.unaryExpr(exponential);MatrixXdresiduals=A-W;问题是当我打印残差总和时:cout通过使用R和相同的输入矩阵执行相同的操作,我得到了不同的值。通过使用R矩阵,我得到-2.950208

c++ - 设置 iOS 项目以使用 eigen

我正在尝试建立一个iOS项目来为线性代数数学编译一个名为Eigen的C++库。我开始按照以下问题中提到的说明进行操作:HowtocompileEigeniniPhone但是还有一些事情我想不通。用户Stafan说要设置正确的编译器标志(-mfpu=neon-mfloat-abi=softfp)。我在哪里设置这些标志?我已经发现为单个文件设置标志,如http://meandmark.com/blog/2011/10/xcode-4-setting-compiler-flags-for-a-single-file/.但是我需要为哪些文件设置这个标志?特别是Eigen库中的c++文件没有出现

c++ - 将 Eigen 仿射变换转换为 Eigen 等距变换

使用Eigen将仿射变换转换为等距变换(即仅由旋转和平移组成)的最简单方法是什么?图书馆?两种变换都是3D的。仿射矩阵在左上象限有一个通用的3x3矩阵(即旋转、缩放和剪切),而等轴测在同一象限有一个3x3旋转矩阵,因此需要投影。Eigen::AffineCompact3fa;Eigen::Isometry3fb(a);给出编译错误:errorC2338:YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION同时Eigen::AffineCompact3fa;Eigen::Isometry3fb(a.rotation(),a.translat