问题标签 [armadillo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3145 浏览

r - 比使用 Rcpp 的 scan() 更快?

在我的机器上,将 ~5x10^6 数值从文本文件读取到 R 中相对较慢(几秒钟,我读取了几个这样的文件),即使使用scan(..., what="numeric", nmax=5000)或类似的技巧也是如此。Rcpp为此类任务尝试包装器是否值得(例如Armadillo,有一些实用程序可以读取文本文件)?或者我可能会因为预期的接口开销而浪费我的时间以获得几乎没有性能提升?我不确定当前是什么限制了速度(机器内在性能,还是其他?)这是我每天重复多次的任务,通常,文件格式始终相同,1000 列,大约 5000 行。

如果需要,这是一个可供使用的示例文件。

更新:我尝试read.csv.sqlload("test.txt", arma::raw_ascii)使用了犰狳,两者都比scan解决方案慢。

0 投票
3 回答
3115 浏览

c++ - 将 MATLAB 单元格类型转换为 c++

我正在使用犰狳为矩阵代数转换 C++ 中的 MATLAB 程序。

我被困在细胞类型上。有人有一些提示吗?

0 投票
2 回答
131 浏览

c++ - Matlab 和任何,理解困难

我无法理解这段代码的作用:

我必须使用 Armadillo 库将它翻译成 C++,它没有any函数,所以我想知道该怎么做。

我已经阅读了matlab 手册,但它仍然令人困惑。然后我尝试了这个测试用例:

使用 * 这些值(以及更多):

但我仍然很困惑,结果很暗..请解释一下吗?

0 投票
4 回答
11352 浏览

c++ - 来自 std::vector 的 arma::rowvec

我有一个 std::vector,我想把它转换成 arma::rowvec

我已经搞定了:

但我得到:

如果不是a(j++,0) = *iter2;a << *iter2;在最终的 rowvec 中使用,我只会得到最后一个元素。

0 投票
5 回答
4749 浏览

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

我正在使用 gdb 来调试我的 c++ 程序。我正在使用犰狳数值库来定义我的矩阵。我有一个这样定义的犰狳矩阵:

使用 gdb 调试器时是否可以打印整个矩阵?

0 投票
1 回答
2318 浏览

r - 创建使用 RcppArmadillo 的包

我已经使用 RcppArmadillo 和内联包编写了函数,我使用的是 Windows 7,安装了 R-2.14.1 和 Rtools215 并检查了路径。

关于如何解决问题的任何建议。

0 投票
2 回答
7735 浏览

cmake - armadillo C++ 矩阵库——如何启用 ATLAS 或 LAPACK?

当我用犰狳 makefile 编译 example2.cpp 并运行它时,我收到一条错误消息

我该如何解决?当我尝试使用解决方案时,我遇到了类似的错误。我的设置的详细信息是:

  • Ubuntu Lucid Lynx 10.04
  • 犰狳版本:2.4.2(Loco Lounge Lizard)
  • 阿特拉斯 3.9.51
  • 提升 1.48.0
  • g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3

Atlas 是在犰狳之前安装的,犰狳安装是用 Cmake 配置的。我远非 cmake 专家,但我认为当我用它生成 makefile 时它应该找到 ATLAS。犰狳文档似乎说,如果我使用 cmake 安装,我不需要手动启用 ATLAS。我试图通过插入手动破解 example2.cpp

在标题之前,但它只会产生一堆关于 Cblas 上缺少的东西的错误。也许缺少允许 cmake 找到 ATLAS 的步骤。感觉我错过了一些简单但关键的东西。任何帮助将不胜感激。

附加细节:

编辑:无论出于何种原因,我无法再添加评论,所以我在下面发布了对@Appleman1234 答案的回复。

我从源代码编译了犰狳和 ATLAS。我认为 ATLAS 已捆绑并优化了 LAPACK 和 BLAS。当我编译它时,我将一个位置传递给 lapack tar

我还在 atlas lib 目录中看到以下文件:

这似乎表明系统上安装了 blas、cblas 和 lapack。但是,犰狳中的CMakeCache.txt似乎表明cmake没有找到BLAS、CBLAS、CLAPACK如下

CMakeCache.txt 中没有 ATLAS 的概念,所以我认为它也没有找到。也许我错了,但似乎我需要以某种方式将 cmake 指向 ATLAS,我只是不知道如何。假设 ATLAS 有 BLAS、LAPACK 和 CBLAS,我也可能会出错。我以为我将它们编译为 ATLAS 的一部分,但我可能错了。将不胜感激您的意见。

问题的解决方案:

德克的建议几乎奏效了。正如我在对他的帖子的回复中提到的那样,问题是 cmake 犹豫不决。我误诊为cmake找不到clapack的问题。事实上,在更仔细地查看了 cmake 输出之后,我意识到当它决定将其用作编译器 /usr/bin/c++ 时,它存在找不到好的编译器或者更确切地说是拖拖拉拉的问题。所以我做了 CXX=g++ 然后再次 cmake 效果很好。在那之后,犰狳编译得很好。

0 投票
1 回答
201 浏览

c++ - 跨 c++ 库的 barrowing 函数(新手)

我想知道如何将功能从一个开源 c++ 库添加到另一个库。为了使事情具体化,这里有一个例子。我真的很喜欢犰狳库中的“查找”功能,现在我发现自己更多地使用eigen,我有点想念它。编写一个完全集成到特征中的等效“查找”(即使用特征对象等......)有多难?如何做到这一点?我在哪里可以找到“查找”功能的源代码?

提前致谢,

0 投票
3 回答
8779 浏览

c++ - 犰狳安装

嗨,正如 README.txt 所说,我在自己的工作目录 /home/me/package/armadillo3.0.1/ 中安装了 Armadillo3.0.1。但是当我尝试一个例子时:

g++ -I /home/me/package/armadillo3.0.1/usr/include/example.cpp -o example -O1

它总是显示错误:

/tmp/ccZAE9pj.o: In function void arma::gemm<false, false, false, false>::apply_blas_type<double>(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double, double)': example.cpp:(.text._ZN4arma4gemmILb0ELb0ELb0ELb0EE15apply_blas_typeIdEEvRNS_3MatIT_EERKS5_S8_S4_S4_[void arma::gemm<false, false, false, false>::apply_blas_type<double>(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double, double)]+0x75e): undefined reference towrapper_dgemm_' /tmp/ccZAE9pj.o: In function void arma::glue_times_redirect2_helper<true>::apply<arma::Mat<double>, arma::Mat<double> >(arma::Mat<arma::Mat<double>::elem_type>&, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times> const&)': example.cpp:(.text._ZN4arma27glue_times_redirect2_helperILb1EE5applyINS_3MatIdEES4_EEvRNS3_INT_9elem_typeEEERKNS_4GlueIS5_T0_NS_10glue_timesEEE[void arma::glue_times_redirect2_helper<true>::apply<arma::Mat<double>, arma::Mat<double> >(arma::Mat<arma::Mat<double>::elem_type>&, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times> const&)]+0xe69): undefined reference towrapper_dgemv_' example.cpp:(.text._ZN4arma27glue_times_redirect2_helperILb1EE5applyINS_3MatIdEES4_EEvRNS3_INT_9elem_typeEEERKNS_4GlueIS5_T0_NS_10glue_timesEEE[void arma::glue_times_redirect2_helper::apply, arma::Mat >(arma:: Mat::elem_type>&, arma::Glue, arma::Mat, arma::glue_times> const&)]+0x1175): undefined reference to `wrapper_dgemv_' collect2: ld 返回 1 exit status

但是,如果我添加 -larmadillo 选项,例如:

g++ example.cpp -o 示例 -O1 -larmadillo

它通过调用旧版本来工作。如果我想使用 Mat.t() 等 3.0.1 中的新功能,它也会显示错误:

example.cpp: In function 'int main(int, char**)': example.cpp:20: error: 'struct arma::mat' has no member named 't'</p>

这表明通过添加 -larmadillo,它从 /usr/include/armadillo_bits/ 调用旧版本的犰狳。

有什么想法吗?谢谢。

0 投票
3 回答
4715 浏览

c++ - 从“arma::umat”到“arma::mat”的转换

如何在犰狳上从 umat 转换为 mat?

谢谢,