大きな行列を格納/計算するために、C++ でArmadilloライブラリを使用しています。大きな配列/行列を動的に(ヒープ上に)格納する必要があることは私の理解です。
行列を宣言するとします
mat X;
サイズを (たとえば) 500 行、ランダムなエントリで 500 列に設定します。
X.randn(500,500);
アルマジロX
はnew
or delete
. 私が尋ねる理由は、Armadillo では変数を次のように宣言できるようだからです。
mat::fixed<n_rows, n_cols>
これは、「一般に、動的メモリ割り当てよりも高速ですが、マトリックスのサイズを後で(直接的または間接的に)変更することはできません」と引用しています。
上記に関係なく、これを使用する必要があります:
mat A;
A.set_size(n-1,n-1);
またはこれ:
mat *A = new mat;
(*A).set_size(n-1,n-1);
ここで、n は 1000 から 100000 の間で、事前にはわかりません。