MATLAB - GNU Octave 教程



GNU Octave 是一種類似於 MATLAB 的高階程式語言,並且與 MATLAB 大部分相容。它也用於數值計算。

Octave 與 MATLAB 具有以下共同特性:

  • 矩陣是基本資料型別
  • 它內建支援複數
  • 它內建了數學函式和庫
  • 它支援使用者定義函式

GNU Octave 也是可自由重新發布的軟體。您可以根據自由軟體基金會發布的 GNU 通用公共許可證 (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 圖形:

3-D Map in Matlab

不相容示例

儘管 Octave 中提供了 MATLAB 的所有核心功能,但某些功能(例如微積分中的微分和積分)在兩種語言中的實現並不完全相同。本教程嘗試提供兩種型別的示例,其中它們的語法有所不同。

考慮以下示例,其中 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 將繪製圖形:

Definite Integral

顯示以下結果:

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

© . All rights reserved.