2007年9月10日月曜日

Webとの親和性

FreeMatもMATLABと同様Web特にHtmlファイルやXmlファイルとの親和性を重要視しているようだ。FreeMatで興味深いのが、「urlwrite」というコマンドだ。正直このコマンドの応用例は見つからないが、これを使用することで、任意のURLのHtmlファイルを保存することができる。これにより、ある時間になったらあるサイトを保存するなどプログラムの中に組み込んで使用することも可能だ。例えば、

--> urlwrite('http://www.yahoo.co.jp/index.html','aaa.html',1000)

とするとヤフーのトップページがローカルのaaa.htmlに保存される。

先述したようによい応用例が思いつかないが、おもしろい機能であることは間違いない。

2007年9月1日土曜日

分散処理環境

FreeMatは早い段階から分散処理を視野にいれた開発がなされている。MATLABでも近年Distributed Computing ToolboxDistributed Computing Engineなどをやっとリリースし、分散処理を推進する方向へは向かっているが、FreeMatはそれを開発当初から行っているのである。その内容・計画が以下のURLにしめされている。
http://freemat.sourceforge.net/wiki/index.php/Parallelization_Plans
以下に簡単にまとめると、

・ ノード間をメッセージ信号でやりとりし分散するMPIは現バージョン(Ver.3.4)では、使用できない(以前のバージョンでは使用できたが、MPI実行時のFreeMatの動作に問題があったようだ)。

・ Ver.3.1よりマルチプルスレッドをサポート

・ OpenMPをサポート

などである。

まだ、発展途上の感は否定できないが、これらがより完成度を高めていくのを期待したい。

しかし開発者が少ないからまだ難しいのかな?やはり寄付金が必要かな?それとも開発できる人の参加があればよいのかな??どなたか優秀な日本の方も参加しないか、密かに期待する今日この頃です。

2007年8月28日火曜日

乱数

数値計算では乱数を発生させて、計算することが多い。またノイズの影響を見る際にもこの乱数が重要となる。

数値計算で用いる乱数は純粋な乱数ではなく、擬似乱数といいランダム性を限りなく持たせた人工的な数列に他ならない。この乱数を発生させるアルゴリズムは難しくそれほど多くはない。

この擬似乱数の説明はウィキペディアに任せるとして、ここではFreeMatで使用されるアルゴリズムに関して言及したい。

MATLABでは最新のまた周期の非常に長い良質な乱数を発生するメルセンヌ・ツイスタ法が用いられている。FreeMatはそこまでいかないまでも、Scilabなどのアルゴリズムよりも良いものが採用されている。

--> rand('state')
を実行したときの返り値(状態)は、625個の整数であり、かなり高精度である(FreeMatの開発者にアルゴリズムを聞いてみます)


-----------------------------
アルゴリズムに関して開発者Samit氏より回答をいただいた。

FreeMatでもメルセンヌ・ツイスタ法を使用しているそうだ!!!!!!
すごい、MATLABと同じアルゴリズムではないか・・・無償と有償で同じアルゴリズムを実装しているなんて・・・ほんと今後が楽しみだ!ちなみにその際のやりとりは以下です。

http://groups.google.com/group/freemat/browse_thread/thread/d8ec4eec997270fe

2007年8月26日日曜日

GUI環境

FreeMatの他にもScilabGNU Octaveなどフリーの数値解析ソフトウェアは数多くある(MATLABは有償)。これらのソフトウェアが持たず、FreeMatのみがもつ有益な機能が、今回紹介する「GUI構築機能」である(MATLABはもちろん本機能はある)。

MATLABには、「GUIDE」というGUI構築機能があるが、FreeMatにはまだない。そうはいってもGUIDEはGUIのオブジェクトの配置を決定することだけが有益であり、コマンドのuicontrolで如何様にも対応できる。

例えば以下のコマンドをFreeMatのコマンドライン上で実行できるであろうか。

--> uicontrol('style','edit','string','0','position',[10 50 300 40])

このuicontrolというコマンドにてエディットボックスができる。以下にGUI構築の簡単な例を示す。2つのm-ファイルに分けて実行してみよう。

(test_gui.m)
h_e=uicontrol('style','edit','string','0','position',[10 50 300 40]);
h_s=uicontrol('style','slider','position',[10 150 300 40],'max',10);
a=[h_s,h_e];
h_b=uicontrol('style','pushbutton','position',[10 250 50 40],'string','push','callback','aaa(a)')


(aaa.m)

function aaa(a)

h_s=a(1)

h_e=a(2)

a=get(h_s,'value');

set(h_e,'string',num2str(a));


上記の図が実行結果である。
スライダーを動かし、ボタンを押すとそのときのスライダーバーの値をエディットボックスに返す(スライダーは0~10の値をもつ)。

このようにオブジェクトの管理の仕方もMATLABと同じであり、非常に便利である。この例に関して質問のある方はコメントまで。



処理速度

やはり数値計算させる製品、気になるのは処理速度だろう!!実はこのFreeMat、有償のMATLABとさほど処理速度は変わらない。むしろ早いくらいだ。その理由は、やはり元となっている計算エンジンLinpack、LapackはMATLABもFreeMatも変わらないからであろう!!あるマシンで速度の測定をしてみた。

[実行コマンド]
>> tic,a=rand(1000,1000)*rand(1000,1000);,toc

[結果]
MATLAB 2.5[s]
Scilab 2.3[s]
FreeMat 2.3[s]

といった具合だ。

上記のコマンドだけで比較しているので、ある側面だけを見ているのかもしれないが、速度的には全く遜色ないといってよい。

そうなれば、やはり、フリーで斬新なFreeMatで関数を募集し収集するのが、よいと思う。以下のサイトでは掲示板に関数を集めているようだ。皆様も自慢のアルゴリズム(コード)を投稿されてはいかがか?
http://bbs5.fc2.com/php/e.php/freemat/

2007年8月25日土曜日

翻訳

ソフトを使用する上で問題となるのが、マニュアルのわかりやすさだ。FreeMatのような数値計算ソフトウェアは扱うトピックス自体が難解であるので、このマニュアルもやはり難解になってしまう。また日本人にとってマニュアルの言語が英語ならなおさらのことだ。

この問題をほんのちょっと解決(弱いすね・・・)するのが、翻訳だ。MATLABに関してはサイバネットが翻訳し日本語マニュアルを提供しているようだが、人を介さずも同程度の品質で翻訳をしてくれるのが、googleの翻訳機能だ。

以下のアドレスにFrreMatのマニュアルが公開されている。
http://freemat.web.fc2.com/
ここを指定してgoogleの翻訳機能をかけてみよう!
http://www.google.co.jp/language_tools?hl=ja
のページにある「ウェブページを翻訳する:」を利用して翻訳してみる。

すると、翻訳結果は以下のようになる。
http://freemat.web.fc2.com/translate_fft.htm
まんざらでもないであろう!!多少日本語に違和感があるかもしれないが、人間が訳してもこんなものであろう!!

これで、日本でもFreeMatの開発、普及が加速してもらえれば幸いなり・・・。

2007年8月22日水曜日

なぜ今さら新たな数値計算ソフトウェアか・・・?

MATLABを模擬したフリーの数値計算ソフトウェアはScalibやOctaveなどが既に存在するではないか、と思われるかもしれません。しかし、このFreeMatは、これらとは決定的に異なる点があります。それはGPLと いう思想です。これにより最近では主流の多くのGPLを表明した関数が組み込むことができます。例えば、fftwや乱数などがそれにあたります。こういったソフトウェアはアカデミックな方々が多く関与しており、またアルゴリズムは一度コード化すれば永久に使用できるため、無償で提供する場合が多いのです。実際MATLABも元を正せばBLAS、LINPACK、LAPACKなどのフリーコードを使用して作成されたものです。

よりよいアルゴリズムがGPLライセンスで提供される昨今、やはり有償でコードを公開できないMATLABよりのFreeMatの方が普及速度が速いと思います。

本当に今後のFreeMatの動向には目が離せません。

2007年8月21日火曜日

FreeMatを盛り上げよう!!

 このブログは、数値解析ソフトウェアFreeMatの普及のために発足されました。どんどん更新していきますので、皆様もご意見お願いいたします。

 MATLABなんかに負けないぞぉっ!!GPLはすごいんだぞ!!