C++ 中矩阵的动态名称(犰狳库)

Posted

技术标签:

【中文标题】C++ 中矩阵的动态名称(犰狳库)【英文标题】:dynamic names of matrices in C++ (Armadillo library) 【发布时间】:2017-04-18 00:28:32 【问题描述】:

我想在 C++(使用 Armadillo 库)中生成 k 不同的随机矩阵,其中 n 一开始不固定,是我函数的输入。在犰狳中很容易通过在for 循环中使用以下代码来生成随机矩阵:

 mat A = randu<mat>(n,n);

但由于我在接下来的步骤中需要它们,我必须为它们分配动态名称或索引,例如A1, A2, .... 我想知道除了使用指针之外,哪种方法最适合这种情况?

【问题讨论】:

容器怎么样,比如std::vector&lt;mat&gt; 实在没办法做到这一点,你需要使用一个容器。由于您不知道您将拥有的矩阵数量,因此向量可能是您的最佳选择 @Nic 能否请您提及在这种情况下如何使用向量定义我的“for”循环? 我不认为代码 sn-p 真的有帮助,我建议看一个关于向量的教程 @aschepler 谢谢。它适用于我的情况。 【参考方案1】:

改用犰狳立方体可能更方便(也更有效,但尚未测试):

cube A = randu<cube>(n,n,k);

然后,该立方体中的单个矩阵将作为A.slice(i) 访问,其中 0 ≤ i ≤ k-1。就像矩阵立方体可以在运行时调整大小一样,因此您可以动态更改 n 和 k。您甚至可以使用 A.resize(n',n',k') 保留旧值

【讨论】:

以上是关于C++ 中矩阵的动态名称(犰狳库)的主要内容,如果未能解决你的问题,请参考以下文章

C++中犰狳矩阵维度的动态参数化

在 C++ 中存储大矩阵(犰狳)

犰狳库是不是会减慢矩阵运算的执行速度?

犰狳 C++ 矩阵线程安全吗

具有临时消除功能的 C++ OpenCL 矩阵库

为什么犰狳矩阵计算比Fortran慢得多