2017-04-18 46 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')