2017-04-18 103 views
1

我想在C++(带有Armadillo库)中生成k不同的随机矩阵,其中n首先不是固定的,并且是我函数中的输入。这是很容易在犰狳生成使用for循环中下面的代码随机矩阵:C++中的矩阵的动态名称(犰狳库)

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

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

+2

保留旧值如何使用容器,例如'std :: vector '? – aschepler

+0

真的没有办法做到这一点,你需要使用容器。既然你不知道矩阵的数量,一个向量可能是你最好的选择 – Nic

+0

@Nic请你提一下如何在这种情况下通过使用向量来定义我的“for”循环? – Jmath

回答

3

这可能是更方便的(和有效的,但还没有测试),以代替使用犰狳立方体:

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

在该立方体的单个矩阵将被作为A.slice(i)与0≤I≤ķ访问-1。就像矩阵立方体可以在运行时调整大小,所以你可以动态地改变你的n和k。您甚至可以使用A.resize(n',n',k')