GNU Octave
開發者 | John W. Eaton and many others[1] |
---|---|
首次釋出 | 1988年 |
目前版本 | 7.2.0(2022年7月28日[2]) |
原始碼庫 | |
程式語言 | C, C++, Fortran[3] |
語言 | 19種語言[來源請求] |
類型 | 科學計算 |
特許條款 | GNU GPLv3 |
網站 | www |
GNU Octave是一種採用進階程式語言的主要用於數值分析的軟件。Octave有助於以數值方式解決線性和非線性問題,並使用與MATLAB相容的語言進行其他數值實驗。它也可以作為面向批次處理的語言使用。因為它是GNU計劃的一部分,所以它是GNU通用公眾特許條款條款下的自由軟件。
Octave是MATLAB的主要自由替代品之一,其他還有Scilab和FreeMat。[4][5][6][7] 然而,與Octave相比,Scilab更少強調與MATLAB的(雙向)句法相容性。[4][8][9]
歷史
[編輯]系統性開發則是由John W. Eaton在1992年接手才開始的。 第一個alpha測試版是在1993年1月4日釋出,1.0穩定版則是在1994年2月17日釋出[10]。
其名稱與音樂上的八度沒有直接關係。該軟件乃是以一位早期開發群的成員,同時也以敏於處理數值逼近問題著稱的前化工系教授奧克塔夫·列文斯比爾(Octave Levenspiel)之名命名的。
技術細節
[編輯]Octave語言
[編輯]Octave語言是直譯式及結構化(類於第二代的BASIC)的程式語言,支援許多C語言風格的標準函數功能,同時可以使用UNIX的系統呼叫以進行擴充增進功能,但不支援以參照的方式傳遞參數。
Octave的核心由一組內建的(built-in)矩陣運算語言(如四則運算)和可載入函數(Loadable Function)組成(例如求矩陣逆inv),其餘能在核心語言之上實現而且效能開銷不會顯著增加的函數呼叫則一般以Octave指令碼的形式存在(例如求解方程組的fsolve函數)。Octave 直譯器會自動處理各種不同類型的調用。
Octave支援資料建構,也支援基本的物件導向編程,但通常仍把它當作面向過程的程式設計語言來看待。
它的語法基本上與Matlab一致,嚴謹編寫的程式碼應同時可在Matlab及Octave執行。但若調用了Matlab工具包,則一般不能直接在Octave上運行,因爲Octave附帶的工具包與Matlab並不相容。
由於Octave是以GNU通用公眾特許條款特許,所以可以自由地複製、流通與使用。Octave可在大部份的類Unix作業系統中執行,亦可在Microsoft Windows中執行。在Mac OS X中運行也是可能的,但設置較爲複雜。[11]
特殊功能
[編輯]- 變數及函數名稱自動補齊
在命令列按下TAB鍵,Octave會自動補齊變數,函數或檔案的名稱。Octave會依據游標之前的文字來補齊。
- 指令回溯
在互動模式下,Octave會將歷次指令存在暫存檔中以俟呼叫與編輯。
- 資料建構:
Octave包含了初步的資料建構功能,例如:
octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string"; octave:2> x.a x.a = 1 octave:3> x.b x.b = 1 2 3 4 octave:4> x.c x.c = string
- 短路邏輯算符:
Octave的`&&'及`||'的邏輯算符是在短路的方式下運算(如同C語言中的相仿算符),相反於逐算子算符`&'及`|'。
- 遞增與遞減算符
Octave如同C語言一樣具有可前置或後置的遞增與遞減算符。
- 例外處理:
Octave以提供初步的LISP式unwind_protect
例外處理模式。通常unwind_protect
的表述區段可表示如下:
unwind_protect
body
unwind_protect_cleanup
cleanup
end_unwind_protect
- 可變長度參數表列:
Octave提供用於處理未指明參數個數時的函數呼叫機制:利用特殊的varargin
作為參數來呼叫函數。
function s = plus(varargin)
if(nargin==0)
s = 0;
else
s = varargin{1} + plus (varargin{2:nargin});
endif
endfunction
- 可變長度回傳表列:
單一函數可以varargout
這一特殊回傳值來回傳任意數目的值,例如:
function varargout = multiassign(data)
for k=1:nargout
varargout{k} = data(:,k);
endfor
endfunction
MATLAB相容性
[編輯]Octave最初便是模彷Matlab而設計,自然與Matlab有許多相同的功能。這也使得一部分Matlab程式可以直接或經過少量修改在Octave上執行,一些軟件開發小組也使用兩者相容的語法,直接開發可以同時在Matlab和Octave使用的程式。
參見
[編輯]參考文獻
[編輯]- ^ Rik. contributors.in. 10 June 2015 [14 June 2015]. (原始內容存檔於2022-04-10).
- ^ GNU Octave 7.2.0 Released. 2022-07-28 [2022-07-28]. (原始內容存檔於2022-08-06).
- ^ Building - Octave. wiki.octave.org. GNU. [1 May 2018]. (原始內容存檔於2020-07-06) (英語).
- ^ 4.0 4.1 Trappenberg, Thomas. Fundamentals of Computational Neuroscience. Oxford University Press. 2010: 361. ISBN 978-0-19-956841-3.
- ^ Muhammad, A; Zalizniak, V. Practical Scientific Computing. Woodhead Publishing. 2011: 3. ISBN 978-0-85709-226-7.
- ^ Megrey, Bernard A.; Moksness, Erlend. Computers in Fisheries Research. Springer Science & Business Media. 2008: 345. ISBN 978-1-4020-8636-6.
- ^ Kapuno, Raul Raymond. Programming for Chemical Engineers Using C, C++, and MATLAB. Jones & Bartlett Publishers. 2008: 365. ISBN 978-1-934015-09-4.
- ^ Herman, Russell L. A Course in Mathematical Methods for Physicists. CRC Press. 2013: 42. ISBN 978-1-4665-8467-9.
- ^ Wouwer, Alain Vande; Saucez, Philippe; Vilas, Carlos. Simulation of ODE/PDE Models with MATLAB, Octave and Scilab: Scientific and Engineering Applications. Springer. 2014: 114–115. ISBN 978-3-319-06790-2.
- ^ About Octave. [2010-11-21]. (原始內容存檔於2021-01-25).
- ^ Installing MacOS X Bundle. GNU Octave. [2012-03-12]. (原始內容存檔於2012-06-25).
外部連結
[編輯]- Octave.org網頁(頁面存檔備份,存於互聯網檔案館)
- 在線支援(含文件) (頁面存檔備份,存於互聯網檔案館)
- Octave快記(頁面存檔備份,存於互聯網檔案館)
- Octave-forge社羣開發網頁 (頁面存檔備份,存於互聯網檔案館)
- Octave教學與技術手冊 (頁面存檔備份,存於互聯網檔案館)提供Octave相關教學與範例。
- Octave Workshop:一個Octave的整合編程環境[永久失效連結]
- kOctave:圖型介面 - 適用於KDE
- Octave線上計算(頁面存檔備份,存於互聯網檔案館) - 可在網上執行Octave程式。
- Octave FAQ快記有關繪圖的部份
- OctPlot (頁面存檔備份,存於互聯網檔案館)圖形處理套件,提供高質素的螢幕輸出。
- Help-Octave在Gmane的郵件討論區存檔
- Octave的MPI toolbox工具箱利用GNU Octave作並行計算
- Xoctave : GNU Octave GUI (頁面存檔備份,存於互聯網檔案館)