Matlab GNU Octave

GNU Octave是像MATLAB這樣的高級編程語言,它能與MATLAB兼容。它也是用於數值計算。

Octave具有以下MATLAB的常見功能 -

  • 矩陣是基本數據類型
  • 它內置了對複雜數字的支持
  • 它具有內置的數學函數和庫
  • 它支持用戶定義的函數

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

MATLAB vs Octave

大多數MATLAB程序都運行在Octave中運行,但是某些Octave程序可能無法在MATLAB中運行,因爲Octave不支持MATLAB的某些語法。

例如,MATLAB僅支持單引號,但是Octave支持單引號和雙引號來定義字符串。 如果正在尋找Octave教程,那麼請從頭開始學習本教程,因爲在本教程中涵蓋了MATLAB和Octave。

兼容的示例

本教程中涵蓋的幾乎所有示例都與MATLAB以及Octave兼容。在MATLAB和Octave中嘗試以下示例,它產生相同的結果 -

此示例爲函數 -

Matlab

創建一個3D曲面圖。 創建腳本文件並鍵入以下代碼 -

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

MATLAB運行文件時,將顯示以下三維圖 -

Matlab

不兼容的例子

雖然MATLAB的所有核心功能都可以在Octave中使用,但是還有一些功能,例如微分和積分微積分,這兩種語言都不完全匹配。本教程嘗試給出兩種類型的示例,它們的語法不同。

考慮以下示例,其中MATLAB和Octave使用不同的函數來獲得曲線的面積:f(x)= x^2 cos(x),對於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運行文件時,將顯示以下圖形 -

Matlab

但是爲了給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));