2012年11月2日金曜日

Matlab は行よりも列のほうが高速

Matlab で計算をするときには、一般に行よりも列のほうが高速である。
たとえば、100x100の行列でも
A = [];
for i=1:1000
   A = [A; rand(1,1000)];
end
と行ごとに追加するよりも
A = [];
for j=1:1000
   A = [A rand(1000,1)];
end
と追加したほうがベターである。
行ごとなら 2.73 秒かかるが列ごとなら 1.86秒になる。

このあたりは、C言語やFortranのインターフェースである mex を勉強するとわかりやすいが、mex についてはチュートリアルが2006年のものしかなく、2009年以降の Matlab ではコンパイルに失敗することが多い。
http://www.mathworks.com/tagteam/56811_TT024_MEX_File_Tutorial.pdf

Matlab では、サポート体制が不十分らしくマニュアルなどにないチップがたくさんあり、そのあたりをどのように共有していくか、が大事なのかもしれない。

今日の作業内容:論文校正 2h
今日のランチ:信華園 肉野菜炒め
明日の予測作業時間:4h



0 件のコメント:

コメントを投稿