GNU Octaveをマスター:MATLAB互換の完全チュートリアル
GNU OctaveはMATLABのような高水準プログラミング言語で、MATLABとほぼ互換性があります。数値計算にも使用されます。
OctaveにはMATLABと以下の共通機能があります。
- 行列が基本データ型
- 複素数の組み込みサポート
- 組み込み数学関数とライブラリ
- ユーザー定義関数のサポート
GNU Octaveは自由に再配布可能なソフトウェアです。フリーソフトウェア財団によって公開されたGNU General Public License(GPL)の条件の下で、再配布および変更が可能です。
MATLABとOctaveの比較
ほとんどのMATLABプログラムはOctaveで実行できますが、Octaveの一部のプログラムはMATLABで実行できない場合があります。これは、OctaveがMATLABでは許可されていない構文を許可しているためです。
例えば、MATLABは一重引用符のみサポートしますが、Octaveは一重引用符と二重引用符の両方を文字列定義にサポートしています。Octaveのチュートリアルをお探しの場合は、このチュートリアルを最初から読み進めてください。MATLABとOctaveの両方をカバーしています。
互換性のある例
このチュートリアルで扱われているほぼすべての例は、MATLABとOctaveの両方で互換性があります。構文変更なしで両方で同じ結果を生成する以下の例をMATLABとOctaveで試してみてください。
この例は、関数g = xe-(x2 + y2)の3D曲面マップを作成します。スクリプトファイルを作成し、以下のコードを入力します。
[x,y] = meshgrid(-2:.2:2); g = x .* exp(-x.^2 - y.^2); surf(x, y, g) print -deps graph.eps
ファイルを実行すると、MATLABは以下の3Dマップを表示します。
非互換の例
MATLABのすべてのコア機能はOctaveで利用できますが、微分・積分学など一部の機能は両言語で完全に一致しません。このチュートリアルでは、構文が異なる場合に両方の例を示しています。
以下の例では、MATLABとOctaveが曲線の面積を求めるために異なる関数を使用しています:f(x) = x2 cos(x)で−4 ≤ x ≤ 9。以下はMATLAB版のコードです。
f = x^2*cos(x); ezplot(f, [-4,9]) a = int(f, -4, 9) disp('Area: '), disp(double(a));
ファイルを実行すると、MATLABはグラフをプロットします。
以下の結果が表示されます。
a = 8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9) Area: 0.3326
しかし、Octaveで同じ曲線の面積を求めるには、symbolicパッケージを使用する必要があります。
pkg load symbolic symbols x = sym("x"); f = inline("x^2*cos(x)"); ezplot(f, [-4,9]) print -deps graph.eps [a, ierror, nfneval] = quad(f, -4, 9); display('Area: '), disp(double(a));
MATLAB