そこで、似たソフトを探してみたところ、"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のリファレンスマニュアルを見ながら使えます。^^





