MATLAB/Scilab/Octaveではベクトルの処理をfor文で記述すると遅くなります。
リスト3-1の簡単なプログラムでfor文の計算時間を調べます。
リスト3-1 for文のソースコード
1 clear all 2 n = 10000000 3 tic 4 a = zeros(n, 1); % (1) 5 toc 6 tic 7 for i = 1 : n 8 a(i) = i; % (2) 9 end 10 toc
MATLAB/Scilab/Octaveの計算時間は表3-1の通りです。
ベクトルの宣言はどのソフトウェアでも時間はかかりませんが、
ベクトルへの値の代入はScilabとOctaveで大幅に時間がかかります。
MATLABと比べて、Scilabは200倍、Octaveは1000倍です。
MATLABもC言語に比べると大幅に遅いです。
これから、大きなベクトルや行列をfor文で処理することは極力避け、
ベクトルや行列のまま計算することが大切であることがわかります。
処理内容 | MATLAB | Scilab | Octave |
---|---|---|---|
(1) ベクトルの宣言 | 0.00秒 | 0.03秒 | 0.02秒 |
(2) ベクトルへの値の代入 | 0.02秒 | 5.46秒 | 23.64秒 |