MATLAB-GNUOctaveチュートリアル

GNU OctaveはMATLABのような高級プログラミング言語であり、MATLABとほとんど互換性があります。また、数値計算にも使用されます。

Octaveには、MATLABで次の共通機能があります-

  • 行列は基本的なデータ型です
  • 複素数のサポートが組み込まれています
  • 数学関数とライブラリが組み込まれています
  • ユーザー定義関数をサポートします

GNU Octaveは、自由に再配布可能なソフトウェアでもあります。Free SoftwareFoundationによって公開されているGNUGeneral Public License(GPL)の条件に基づいて、再配布および/または変更することができます。

MATLABとOctave

ほとんどのMATLABプログラムはOctaveで実行されますが、一部のOctaveプログラムはMATLABで実行されない場合があります。これは、OctaveではMATLABでは許可されていない構文が許可されているためです。

たとえば、MATLABは一重引用符のみをサポートしますが、Octaveは文字列を定義するために一重引用符と二重引用符の両方をサポートします。Octaveのチュートリアルをお探しの場合は、MATLABとOctaveの両方をカバーするこのチュートリアルを最初からお読みください。

互換性のある例

このチュートリアルで取り上げるほとんどすべての例は、MATLABおよびOctaveと互換性があります。構文を変更せずに同じ結果を生成するMATLABとOctaveで次の例を試してみましょう-

この例では、関数g = xe- (x 2 + y 2)の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)= x 2 cos(x)for-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

しかし、オクターブで同じ曲線の面積を与えるには、を利用する必要があります 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));