位置:首頁 > 高級語言 > Matlab教學 > MATLAB GNU Octave教學

MATLAB GNU Octave教學

GNU Octave是一種高級編程語言,像 MATLAB,它主要是用 MATLAB 兼容。它也可以用來進行數值計算。

Octave 和 MATLAB具有以下共同特點:

  • 矩陣的基本數據類型

  • 它內置支持複數

  • 它具有內置數學函數和庫

  • 它支持用戶自定義功能

GNU Octave是自由可再分發的軟件。您可以重新分配和/或修改它由自由軟件基金會發布的GNU通用公共許可證(GPL)的條款下。

MATLAB 和 Octave

大多數的MATLAB程序運行在Octave,但一些 Octave 程序可能無法正常運行,因為 Octave 允許一些語法而MATLAB卻不支持。

例如,MATLAB隻支持單引號,但的八音支持單,雙引號來定義字符串。如果你正在尋找一個Octave教學,然後請去通過本教學從最初開始,涵蓋了MATLAB以及Octave.

兼容的示例

本教學中涉及的幾乎所有的例子都是用 MATLAB 以及 Octave 兼容。讓我們試試下麵的例子在 MATLAB 和 Octave,冇有任何語法的變化產生相同的結果:

此示例創建一個3D表麵地圖函數 g = xe-(x2 + y2). 創建一個腳本文件,並鍵入下麵的代碼:

[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps

當您運行該文件,MATLAB顯示下麵的3-D地圖:

3-D Map in Matlab

不兼容的例子

雖然MATLAB的所有核心功能是可在 Octave 使用,也有一些功能,例如,微分和積分積分,這並不完全匹配,無論是語言。本教學試圖給兩種類型的例子,顯示他們的語法不同。

請看下麵的例子中 MATLAB 和 Octave 使不同功能的使用麵積曲線: f(x) = x2 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繪製圖表:

Definite Integral

並顯示結果如下:

a =
 
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
 
Area: 
    0.3326

麵積在Octave相同的曲線,必須使用符號包如下:

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));