问题标签 [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.
c++ - 比较 blitz++、犰狳、boost::MultiArray
我对 blitz++、armadillo、boost::MultiArray 与以下代码进行了比较(借自一篇旧帖子)
在windows,VS2010上,结果是
在windows,intel c++上,结果是
奇怪的东西:
要使用 intel c++ 编译器编译 blitz++,blitz/intel/ 文件夹中需要一个名为 bzconfig.h 的文件。但是没有。我只是复制 blitz/ms/bzconfig.h 中的那个。这可能会给出非最佳配置。任何人都可以告诉我如何使用 intel c++ 编译器编译 blitz++?在手册中,它说运行 bzconfig 脚本以获取正确的 bzconfig.h。但我不明白这是什么意思。
非常感谢!
补充一些我的结论:
r - RcppArmadillo 传递用户自定义函数
考虑以下 R 代码,
用户可以传递一个函数名“fun”,由caller
. 我希望对RcppArmadillo
对象执行相同的任务(显然,作为更复杂任务的一部分)。该函数将在 中定义C++
,并且用户通过引用其名称在 R 级别选择它:
或者
等等
这是我对调用函数的天真尝试,甚至无法编译:
编辑:在遵循 Dirk 的建议来查看 RcppDE 后修改了示例。
c++ - 当针对奇异矩阵时,solve() 崩溃
我正在尝试以最小二乘法求解线性方程组。使用犰狳及其求解函数,我想计算抛物线拟合的三个系数。
与 CtC=
和 Ctb=
显然 solve() 无法解决它,甚至 Matlab 警告:
一般来说,犰狳或c ++中是否有任何解决方法或更强大/更复杂的方法?谢谢
c++ - Windows 7 上带有 MinGW G++ 错误可执行文件的犰狳
如果我尝试编译代码
使用 MinGW g++ 和最新的犰狳(3.6.1),它在我的 windows XP 上运行良好,但如果我编译它并在 windows 7 上运行它,我会得到:“一个问题导致程序停止正常工作。”
什么可能导致这种情况?
我已经尝试过 4.6.2 和 4.7.2(下一个包含最新的 g++ -v):
使用内置规范。COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.7.2/lto-wrapper.exe 目标:mingw32 配置:../gcc-4.7.2/configure --enable-语言=c,c++,ada,fortran,obj c,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgo mp --disable-win32-registry --enable- libstdcxx-debug --disable-build-poststage1- with-cxx --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw 线程模型:win32 gcc 版本 4.7.2 (GCC)
请注意,在这个阶段,我什至没有链接任何像 LAPACK 这样的库。我也试过取消注释
//#define ARMA_USE_LAPACK
在 config.cpp 中,但没有效果。顺便说一句,我可以在没有犰狳的情况下编译 c 代码,这在两个系统上都没有问题。只有添加犰狳才会引起问题。
更新:如果我按 ctrl-c 我得到:
forrtl:错误(200):由于 control-C 事件而导致程序中止图像
PC 例程行源 lapack_win32_MT.d 103A49EA Unknown Unknown Unknown lapack_win32_MT.d 1034CD0E Unknown Unknown Unknown lapack_win32_MT.d 1035B254 Unknown Unknown Unknown kernel32.dll
755B6C19 Unknown Unknown Unknown kernel32。 dll
75513677 Unknown Unknown Unknown ntdll.dll
77DFC002 Unknown Unknown Unknown ntdll.dll
77DFBFD5 Unknown Unknown Unknown
更新:在另一个 Windows 7 系统上,我确实设法执行,但在编译时收到以下消息(编译犰狳包中的 example2.cpp 时):
谢谢。
multicore - 犰狳线性系统求解器(带有openblas)
我一直在测试各种开源代码来求解 C++ 中的线性方程组。到目前为止,我发现最快的是犰狳,也使用了 OPENblas 包。为了解决一个密集的线性 NxN 系统,其中 N=5000 在我的系统上大约需要 8.3 秒,这真的非常快(没有安装 openblas,大约需要 30 秒)。
这种增加的一个原因是犰狳+openblas 似乎可以使用多线程。它在我的两个内核上运行,而没有 openblas 的犰狳只使用 1 个。我有一个 i7 处理器,所以我想增加内核数量,并进一步测试它。我正在使用 ubuntu,所以从 openblas 文档中我可以在终端中执行以下操作:
导出 OPENBLAS_NUM_THREADS=4
但是,再次运行代码似乎并没有增加正在使用的内核数量或速度。我做错了什么,还是 2 是使用犰狳的“solve(A,b)”命令的最大数量?我无法在任何地方找到犰狳的源代码来查看。
顺便说一句,有人知道犰狳/openblas 用于解决 Ax=b 的方法(具有并行性的标准 LU 分解或其他方法)吗?谢谢!
编辑:实际上,在使用突触包管理器安装 openblas 时,停留在 2 的核心数量似乎是一个错误,请参见此处。从源代码重新安装允许它检测我实际拥有的核心数量 (8)。现在我可以使用 export OPENBLAS_NUM_THREADS=4 等来管理它。
visual-c++ - 创建犰狳 DLL 时未解决的外部符号错误
我正在尝试在 Win XP 上使用 VC++ 2010 创建Armadillo线性代数库的动态库,该库最初是一个仅包含标头的库。我创建了一个新项目,添加了源文件,并创建了一个 .def 文件,指定仅导出一个 Armadillo 函数(Col 类),但 Col 类出现 LNK2001 错误。我可以创建一个 main 并很好地使用 Col,所以我认为 Col 被正确包含。
我还尝试在函数定义上使用“__declspec(dllexport)”并编译,但由于使用 dumpbin 没有显示任何内容,因此函数未导出,并且我无法成功使用 .dll。我在这里错过了什么吗?
c++ - 打印犰狳矢量/矩阵后禁用换行符(C++)
我将 C++ 与犰狳库一起使用。当我打印一个向量或矩阵时,在向量/矩阵之后总是包含一个换行符,即使使用 .raw_print() 也是如此。有什么简单的方法可以禁用这种行为吗?
最小的例子:
我正在使用 GCC 版本 4.4.6 在 linux 上编译和运行
r - 如何使用 RcppArmadillo 绘制多项分布样本?
问题是我有一个变量arma::mat prob_vec
并且想要与rmultinom(1, 1, prob_vec)
R 中相同的东西。
我找到了rmultinom
RcppArmadillo 提供的函数有一个奇怪的参数要求,这与 R 中的不同!所以它不会通过编译。
我只是想知道如何在 RcppArmadillo 或等效地在 Armadillo 中绘制所需的样本。如果我需要获取指针或转换我的prob_vec
变量,请告诉我如何。
非常感谢!
c++ - 如何处理犰狳中“查找”的空返回?
我有一个ivec C1
并且做了,说,sum( C1.elem(find( C1==1 )) )
。
如果没有元素为 1,我希望得到零回报C1
,但它给了我一个错误,说Mat::elem(): given object is not a vector。
我尝试使用(find(C1==1)).is_empty()
,但这没有被接受,因为它告诉我它没有提供is_empty
返回find
. 然后我尝试conv_to<uvec>::from(find(C1==1))
但是当C1
它确实是空的时它不允许这样的转换。
任何人都可以帮我解决这个问题吗?谢谢!!
c++ - 犰狳 C++ 比较
我很困惑。为什么会这样?