eigen相关内容
我的问题很简单,希望也有一个不错的答案:当我构造了 Eigen :: MatrixXd 矩阵时,我可以使用多个线程来填充行吗?同时矩阵(如果我可以确保没有并发写入任何行),还是必须在每个线程中创建临时行对象,然后将它们复制(哦...)作为归约操作复制到矩阵中? / p> 解决方案 虽然不从不同的线程写入同一地址,这可能是线程安全的,因为 Eigen :: MatrixXd 是列的主要存储,
..
我要问的是这个问题。具体来说,我想围绕一个使用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]] 其中每个条目
..
这个问题急匆匆地问了。我原始程序中的错误,不是此处显示的代码中的错字。错误是我的程序v由于某些条件而没有填充。 从该线程获取的更有用的收获是将std :: vector复制到本征矩阵的所有行或列,在接受的答案中。 我想将向量复制到a的列中矩阵,如下所示: #include #include #include
..
我正在使用RcppEigen为我的R代码编写一些C ++函数,并且我想尽可能地优化它们的编译。过去使用Eigen时,我从-O3和-fopenmp获得了巨大的进步。遵循Dirk的建议,我对〜/ .R / Makevars进行了编辑,以便我的本征代码能够可以使用以下标志进行编译: CPPFLAGS = -O3 -fopenmp 这有效-当我检查编译期间发生的情况时(ps ax
..
我在弄清楚如何在Eigen的运行时设置MatrixXd的行和列时遇到了一些麻烦。谁能指出我的一些文档或提供有关如何执行此操作的指导? 谢谢。 解决方案 您可以在运行时使用方法 resize(nrow,ncol)定义MatrixXd大小。您可以在此链接及其API定义此处。
..
在特征值中,我们可以创建一个矩阵,如下所示: Matrix3f m; m
..
如何将尺寸 1×2N 的数据重塑为Eigen中的复杂形式,以形成 P×Q 复矩阵,具有 N 复数, P×Q = N ?在数据中,实部和虚部彼此相邻。我想动态重塑 data ,因为数据可以具有不同的大小。我试图防止复制,只是将数据映射到复杂类型。 int N = 9; int P = 3; int Q = 6; float * data =新的float [2 * N]; f
..
例如,如果我有一个 Eigen :: MatrixXd ,其大小为10列和3行,那么如何将其别名为 std ::?向量 Eigen :: Vector3d 的10个元素的向量? 当我说别名时,我的意思是使用相同的内存块而不进行复制。 我知道我可以通过以下方式进行反向映射: std :: vector v(10); ... Map
..
在我的应用程序中,我想从具有 double 项的给定数据矩阵中获得左奇异矢量,这在代码中以 $ b给出$ b Eigen :: MatrixXd m; ,尺寸为 45 x 904140 。现在,我将构造函数用于Eigen库中的SVD分解,如下所示: Eigen :: BDCSVD svd(m,Eigen :: ComputeFullU | Ei
..
在我正在研究的项目中的一个功能中,我需要找到特征库矩阵除以给定数字后每个元素的其余部分。这是等效于我想做的Matlab: mod(X,num) 其中X是股利矩阵,num是除数。 什么是 解决方案 您可以将C ++ 11 lambda与 unaryExpr : MatrixXi A(4,4),B; A.setRandom(); B = A.
..
我想使用来自不受支持模块的特征张量类 。该网站建议包含类似 #include 之类的东西,以便能够使用它。我在OS X Yosemite的Mac上通过 Homebrew (版本3.2.4)安装了eigen。尽管我让eigen可以正常工作,但在不受支持的文件夹中找不到必要的模块: #include
..
我收到“ cygwin_exception :: open_stackdumpfile:将堆栈跟踪信息转储到TestProject.exe.stackdump”错误。我的项目不过是C ++ HalloWorld项目,其中包含一个附加的类,可以在其中设置和获取变量。我在尝试设置Eigen类型的矩阵变量的行上遇到此错误。这是我的代码: TestProject.cpp #include&l
..
假设我有两个本征矩阵A和B,并且我想创建一个第三矩阵,定义为 C(i,j)= 5.0,如果A( i,j)> B(i,j),否则为0 我想没有显式的for循环也可以这样做。但是我对Eigen并不是很熟练。谁是最好的方法? 解决方案 假设 A , B 和 C 是 MatrixXd ,您可以执行以下操作: C =(A.array()> B.Array())。cast
..
我看到使用新的Eigen 3.2,您可以从稀疏矩阵中获取行,列甚至块,是否可以将其中的任何一个设置为0? Eigen :: SparseMatrix A(5、5); A.block(1,1,2,2)= 0; //无法使用 A.row(1)= 0; //无法使用 A.col(1)= 0; //无法使用 谢谢!
..
我有一个稀疏模式恒定的应用程序。可以说我的计算形式为 sm3 = sm1 + sm2 但是,即使我将所有这些操作数的稀疏模式都设置为相同,我的探查器显示大部分时间都花在了分配和取消分配上结果矩阵。 这是我的MWE: #include #include int mai
..
我们正在面对错误针对Eigen 3.3.7(可能是较旧的版本)进行了编译),而不是MSYS2提供的最新版本的GCC 8.2.1。奇怪的是,这仅在相同软件包的最新版本中发生( mingw-w64-x86_64-gcc 8.2.1): 8.2.1 + 20181123-1:很好 8.2.1 + 20181130-1:错误 8.2.1 + 20181207-1:错误 错误是: 在C
..
我有一个稀疏矩阵A(120,000 * 120,000)和一个向量b(120,000),我想使用本征库求解线性系统AX = b。我尝试按照文档进行操作,但始终出现错误。我还尝试将矩阵更改为稠密并求解系统 Eigen :: MatrixXd H(N,N); HH = Eigen :: MatrixXd(A); Eigen :: ColPivHouseholderQR
..
TensorFlow的C ++接口似乎没有重塑方法。有谁知道如何转换例如 [A,B,C,D] 转换为 [A * B,C,D] ?看起来唯一的方法就是使用Eigen?但是,那里的文档非常苗条,并且代码是模板地狱,不容易解析。 解决方案 解决方案,检查是否重塑张量与源张量的元素数量相同: ///从MobileNet_224中提取的图像特征 tensorflow :: Tensor i
..
我要做的是编译由CMake构建的项目。在我的代码中,我有下一个方法: / ** TriangularView :: solve()的“就地”版本,其中结果以“其他 * *警告”形式编写。此参数仅标记为“ const”,以使C ++编译器在此处接受临时表达式。 *此函数将const_cast它,因此此处不遵守constness。 * *有关详细信息,请参见Triangula
..
我正在尝试使用特征值方法检查矩阵是否为奇异(即,如果特征值之一为零,则矩阵为奇异)。这是代码: z
..