GNU Octave是像MATLAB這樣的高級(jí)編程語(yǔ)言,它與MATLAB大部分兼容。它也用于數(shù)值計(jì)算。
Octave與MATLAB具有以下共同特征-
矩陣是基本數(shù)據(jù)類(lèi)型
它內(nèi)置了對(duì)復(fù)數(shù)的支持
它具有內(nèi)置的數(shù)學(xué)函數(shù)和庫(kù)
它支持用戶(hù)定義的功能
GNU Octave也是可免費(fèi)重新發(fā)行的軟件。您可以根據(jù)自由軟件基金會(huì)發(fā)布的GNU通用公共許可(GPL)的條款重新分發(fā)和/或修改它。
大多數(shù)MATLAB程序都在Octave中運(yùn)行,但是某些Octave程序可能無(wú)法在MATLAB中運(yùn)行,因?yàn)镺ctave允許某些MATLAB不能使用的語(yǔ)法。
例如,MATLAB僅支持單引號(hào),但是Octave支持單引號(hào)和雙引號(hào)來(lái)定義字符串。如果您正在尋找有關(guān)Octave的教程,那么請(qǐng)從頭開(kāi)始閱讀本教程,其中涵蓋了MATLAB和Octave。
本教程中介紹的幾乎所有示例都與MATLAB以及Octave兼容。讓我們嘗試下面的示例,在MATLAB和Octave中產(chǎn)生相同的結(jié)果,而無(wú)需任何語(yǔ)法更改-
本示例為函數(shù)g = xe- (x 2 + y 2)創(chuàng)建3D表面圖。創(chuàng)建一個(gè)腳本文件并輸入以下代碼-
[x,y] = meshgrid(-2:.2:2); g = x .* exp(-x.^2 - y.^2); surf(x, y, g) print -deps graph.eps
運(yùn)行文件時(shí),MATLAB顯示以下3-D映射-
盡管MATLAB的所有核心功能都可以在Octave中使用,但是有些功能(例如,差分和積分演算)在兩種語(yǔ)言中都不完全匹配。本教程嘗試給出兩種示例,它們的語(yǔ)法有所不同。
考慮下面的示例,其中MATLAB和Octave使用不同的函數(shù)來(lái)獲取曲線的面積:f(x)= x 2 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));
運(yùn)行文件時(shí),MATLAB繪制圖形-
顯示以下結(jié)果
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));