•
|
// より速い例
t1 = Tick Seconds();
A = J( 10, 10000, .);
For( i = 1, i <= 10000, i++,
a2 = J( 10, 1, Random Gamma( 1, 1 ) );
// a2にガンマ分布に従う乱数の10行1列のベクトルを設定する
A[0, i] = a2;
/* 行列Aのi番目の列に
a2の値を代入する。最初の引数0は、「すべての行」を表す */
);
t2 = Tick Seconds();
Show( t2 - t1 );
// より遅い例
t3 = Tick Seconds();
B = J( 10, 0, .);
For( i = 1, i <= 10000, i++,
a2 = J( 10, 1, Random Gamma( 1, 1 ) );
B = B || a2;
);
t4 = Tick Seconds();
Show( t4 - t3 );
•
|
必要とする行列のサイズがわかっている場合、通常、行列全体を最初に作成してから、値を設定し直すほうが速くなります。下の例では、J()関数が100000行1列の行列を一度に作成しています。
|
Delete Symbols( a1, a2, ... );
// より速い例
t1 = Tick Seconds();
a1 = J( 100000, 1, Random Uniform() );
t2 = Tick Seconds();
Show( t2 - t1 );
Delete Symbols( a1 );
// より遅い例
t3 = Tick Seconds();
a2 = J( 0,0 );
For( i = 1, i <= 100000, i++,
a2 |/= Random Uniform()
);
t4 = Tick Seconds();
Show( t4 - t3 );