GNU Octave是像MATLAB這樣的高階程式設計語言,它能與MATLAB相容。它也是用於數值計算。
Octave具有以下MATLAB的常見功能 -
GNU Octave也是免費的可再分發軟體。可以根據自由軟體基金會發布的GNU通用公共許可證(GPL)的條款重新分發和/或修改它。
大多數MATLAB程式都執行在Octave中執行,但是某些Octave程式可能無法在MATLAB中執行,因為Octave不支援MATLAB的某些語法。
例如,MATLAB僅支援單引號,但是Octave支援單引號和雙引號來定義字串。 如果正在尋找Octave教學,那麼請從頭開始學習本教學,因為在本教學中涵蓋了MATLAB和Octave。
相容的範例
本教學中涵蓋的幾乎所有範例都與MATLAB以及Octave相容。在MATLAB和Octave中嘗試以下範例,它產生相同的結果 -
此範例為函式 -
建立一個3D曲面圖。 建立指令碼檔案並鍵入以下程式碼 -
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
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執行檔案時,將顯示以下圖形 -
但是為了給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));