GNU Octave是像MATLAB這樣的高級(jí)編程語(yǔ)言,它能與MATLAB兼容。它也是用于數(shù)值計(jì)算。
Octave具有以下MATLAB的常見(jiàn)功能 -
GNU Octave也是免費(fèi)的可再分發(fā)軟件。可以根據(jù)自由軟件基金會(huì)發(fā)布的GNU通用公共許可證(GPL)的條款重新分發(fā)和/或修改它。
大多數(shù)MATLAB程序都運(yùn)行在Octave中運(yùn)行,但是某些Octave程序可能無(wú)法在MATLAB中運(yùn)行,因?yàn)镺ctave不支持MATLAB的某些語(yǔ)法。
例如,MATLAB僅支持單引號(hào),但是Octave支持單引號(hào)和雙引號(hào)來(lái)定義字符串。 如果正在尋找Octave教程,那么請(qǐng)從頭開(kāi)始學(xué)習(xí)本教程,因?yàn)樵诒窘坛讨泻w了MATLAB和Octave。
兼容的示例
本教程中涵蓋的幾乎所有示例都與MATLAB以及Octave兼容。在MATLAB和Octave中嘗試以下示例,它產(chǎn)生相同的結(jié)果 -
此示例為函數(shù) -
創(chuàng)建一個(gè)3D曲面圖。 創(chuàng)建腳本文件并鍵入以下代碼 -
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
MATLAB運(yùn)行文件時(shí),將顯示以下三維圖 -
不兼容的例子
雖然MATLAB的所有核心功能都可以在Octave中使用,但是還有一些功能,例如微分和積分微積分,這兩種語(yǔ)言都不完全匹配。本教程嘗試給出兩種類(lèi)型的示例,它們的語(yǔ)法不同。
考慮以下示例,其中MATLAB和Octave使用不同的函數(shù)來(lái)獲得曲線的面積:f(x)= x^2 cos(x)
,對(duì)于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運(yùn)行文件時(shí),將顯示以下圖形 -
但是為了給Octave提供相同曲線的區(qū)域,但是需要使用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));