jjzjj

Armadillo

全部标签

c++ - Armadillo 中的 4 维矩阵

我最近开始使用Armadillo,虽然我很喜欢它,但如果它有存储4D矩阵的方法,它会很有用。有没有我遗漏的东西,或者解决这个问题的方法?最后一个维度的大小只有三个,所以理论上我可以有这样的东西:std::vector4Dmatrix(3);for(intindex=0;index不过,感觉一定有更好的办法。提前致谢! 最佳答案 您可能会使用field将任意对象存储为vector、矩阵或立方体结构中的元素的类。例如。(来自文档)创建一个包含vecvector的field://createafieldcontainingvectorsf

c++ - 使用 RcppArmadilloExtensions/sp_mat.h 从矩阵到 Armadillo 的稀疏矩阵转换

我正在尝试使用RcppArmadillo包(版本0.3.910.0和R3.0.1以及最新版本)的最新功能将稀疏矩阵从Matrix包(类“dgCMatrix”)转换为sp_mat类型的Armadillo。我正在使用文件“RcppArmadilloExtensions/spmat.h”中的“as”和“wrap”函数。不幸的是,我在尝试创建共享库时遇到编译错误。所以在调用“RCMDINSTALLmyRpackage”时。这是重现错误的最小示例:我用RcppArmadillo.package.skeleton()创建了一个空包我定义了2个.cpp文件及其相应的头文件.h来执行从R导入的稀疏矩阵

c++ - 通过 MPI 传递 Armadillo C++ 矩阵

我需要传递由ArmadilloC++MatrixLibrary定义的矩阵或复杂矩阵类型通过MPI。解决这个问题的好方法是什么?我想尝试:将矩阵写入某种数组然后发送其中的行/列,以及在MPI_send/recv两侧解构/重建数组的方法使用类似MPI_BYTE的类型?谢谢更新所以我试图通过在一个节点上发送和接收来实现另一种方案,举个简单的例子。翻译.cpp#include#include#include#includeusingnamespacestd;usingnamespacearma;usingstd::vector;classArmadilloMPI{public:Armadill

c++ - Rcpp Armadillo : Issue with memory usage

我已经开始使用Rcpp。我很喜欢。我对编程相当陌生。我有一个关于内存使用的问题。下面是一个可重现的问题:library(RcppArmadillo)library(inline)code我的理解是,在上面的问题中,唯一的内存使用是当我将数组分配给变量时。输入在R.所以我应该只使用大约1.6gb(2*2*50*8=1600)。当我去Rcpp时,我初始化了变量输入_使用作为指针的SEXP对象。所以这不应该使用任何额外的内存。然后当我初始化变量打扰,我也使用一个指针并设置copy_aux=FALSE。所以我不应该使用任何内存。因此,如果我的理解是正确的,那么我在运行代码时应该只使用1.6GB

c++ armadillo - 计算零空间

这是我在这里的第一篇文章...有什么方法可以在另一个vector的零空间中计算一个vector?我不需要基,零空间中的一个vector即可。我已经尝试过使用solve()方法-colvecx(3);x=solve(A,B);其中A是mat类型的3x3矩阵-222333444B是colvec类型的零vector-000但是程序终止并抛出以下错误-error:solve():solutionnotfoundterminatecalledafterthrowinganinstanceof'std::runtime_error'what():我之前使用过solve()方法并得到了完美的结果,但

c++ - 有没有办法在 gdb 中打印 Armadillo 矩阵?

我正在使用gdb调试我的C++程序。我正在使用Armadillo数值库来定义我的矩阵。我有一个像这样定义的Armadillo矩阵:matA=randu(5,5);是否可以在使用gdb调试器时打印整个矩阵? 最佳答案 这个问题可能很老,但绊倒它让我找到了适合我自己工作的解决方案。由于Armadillo库基于模板的特性,您需要提供一些您自己的助手:#include#includetemplatevoidprint_matrix(Matrixmatrix){matrix.print(std::cout);}//provideexplici

c++ - Armadillo C++ : Efficient and concise way to multiply every row of a matrix by a vector?

我想知道是否有一种高效简洁的方法来对ArmadilloC++矩阵的每一行(或列)与vector进行逐元素乘法。行(或列)和vector大小相同。例如,如果fmat::each_row()(和/或each_col())可以用作右值,我想要这样的东西来编译(目前它不会编译):#includeintmain(){usingnamespacearma;fmatm(20,10);fvecv(10);//acolumnvectorm.each_row()%v.t();//Currentlyacompilererror.return0;} 最佳答案

c++ - 按索引 vector 对 Armadillo 矩阵的所有列进行排序的最佳方法

我想知道是否有更好的方法来实现我在这里所做的事情。我有一个arma矩阵,我想通过存储在uvecvector中的索引重新排序它的所有列。我想我基本上是在复制整个矩阵。#includeusingnamespacearma;intmain(){//getadiscreterandommatrix//definedumatbecauseeventuallywantto//orderbyagivencolumnOFA.irrelevantnow.umatA=randi(4,6,distr_param(0,3));std::cout(0,A.n_cols-1,A.n_cols);//orderAL

c++ - 如何将 Armadillo 矩阵转换为 vector vector ?

我创建了一个Armadilloc++矩阵如下:arma::matA;A.zeros(3,4);我想将其转换为由定义的vector组成的vectorstd::vector>B(3,std::vector(4));如何设置B等于A?如果vectorvector没有简单的方法,那么数组数组呢,即,如果我将B定义为doubleB[3][4]; 最佳答案 在这种情况下,您应该使用arma::conv_to这是arma的一个非常棒的功能。请注意,此方法将要求源对象能够被解释为vector。这就是为什么我们需要对每一行迭代地执行此操作。下面是一种

c++ - 比较 blitz++、 Armadillo 、boost::MultiArray

我用下面的代码对比了blitz++、armadillo、boost::MultiArray(借用自anoldpost)#includeusingnamespacestd;#include#define_SCL_SECURE_NO_WARNINGS#defineBOOST_DISABLE_ASSERTS#include#include#includeintmain(intargc,char*argv[]){constintX_SIZE=1000;constintY_SIZE=1000;constintITERATIONS=100;unsignedintstartTime=0;unsign