2009年 7月 07日(火曜日) 23:31

Matlabもどきのオープンソースソフトウェア『Octave』

評価:
(0 票)

Matlabは信号処理関連のソフトウェア開発時に実験用などで便利なソフトですが、数百万円ぐらいしてとても個人では手が出ません。私は会社員だった頃はMatlabを使っていましたのである程度慣れているのですが、もはやMatlabを使うという選択肢はありません。

そこで、似たソフトを探してみたところ、"Scilab"と"Octave"というのがありました。どちらもGPL(ScilabはCeCILL:フランス版GPL)のオープンソースソフトウェアです。

早速両方試してみましたが、ScilabはGUIが充実していてグラフの詳細がGUIで設定できたりする反面、Matlabとの互換性は低く、OctaveはMatlabとの互換性が非常に高いのだけどGUIはないといった感じです。Octaveはグラフの描画はGNUPLOTを使っているようです。

Google Trendsで見てみると、世界的にはOctaveの方が上だけど、発祥地のフランスではScilabの方が少し上、日本でもScilabがかなり強くてOctaveと同じぐらいです。

私はとりあえずMatlabとの互換性が高いOctaveを使うことにしました。

ついでに信号処理でよく使う基本的なコマンドを実行してテストしてみました。

# 20Hz、振幅1のサイン波を1kHzサンプリングで1秒間サンプリングした波形をプロット

t = [0:0.001:1];

fs = 20;

y = sin(2*pi*fs*t);

plot(t,y);

# 0から1の乱数を512個作成

r = rand(1, 512);

# パワースペクトルを表示 (1kHzサンプリングを仮定)

plot([0:1000/512:1000-1000/512], abs(fft(r)./size(r,1)).^2);

# x軸の範囲を0-500Hzに、y軸の範囲を0-10に調整

axis([0, 500, 0, 10]);

# Gridを表示

grid on;

# x軸のラベルを"Frequency [Hz]"に、y軸のラベルを"Power [V]"に設定

xlabel('Frequency [Hz]');

ylabel('Power [V^2]');

# グラフタイトルを表示

title('Power Spectrum Diagram of white noise');

# x軸のメモリの間隔を50に、y軸のメモリ間隔を1に変更

set(gca, 'XTick', [0:50:500], 'YTick', [0:10]);

Matlabのコマンドがそっくりそのまま使えます。サイバーネットのMatlabのリファレンスマニュアルを見ながら使えます。^^

最終更新日: 2011年 6月 27日(月曜日) 01:48
くらち たかよし

くらち たかよし

モバイル・Webアプリ作家。最近は主にiPhoneアプリ制作を手がける。企画から、UIデザイン、設計、実装、テスト、多言語対応、ユーザーサポートまでを1人〜数人の個人で行う全人的開発手法の確立を目指している。

使う言語はObjective-C, C++, C#, Java, PHPなど。Web関連で使うものはCakePHP, MySQL, Joomla! CMSなど。デザインはシロウトながらPhotoshopとIllustratorをなんとかがんばって使う。

場所や時間に縛られない、インターネット時代の新しい働き方、自由な生き方を模索中。海外移住、低予算&低リスク起業、キャリアデザイン、心理学などにも興味あり。

Web: awaresoft.jp/