GNU Octave

维基百科,自由的百科全书
跳转至: 导航搜索
GNU Octave
Gnu-octave-logo.svg
Octave.activities.png
GNU Octave
開發者 John W. Eaton
穩定版本 3.8.2 (2014年8月13日(48天前) (2014-08-13)) [±][1]
預覽版本 3.6.4-rc0  (2012年10月17日(23個月前) (2012-10-17))
操作系统 跨平臺
类型 数学软件
许可协议 GNU通用公共許可證
網站 http://www.octave.org/

Octave是一個旨在提供與Matlab語法相容的開放源碼科學計算數值分析的工具;它同時也是GNU計畫成員之一。

歷史[编辑]

該軟體肇始於1988年,其初衷是提供一些化學反應設計課程的輔助工具。

系統性開發則是由John W. Eaton在1992年接手才開始的。 第一個alpha測試版是在1993年1月4日釋出,1.0穩定版則是在1994年2月17日釋出[2]。最新的穩定版3.6.4在2013年2月21日釋出。但仍有一些Linux发行版還在默認的軟件倉庫中使用3.2.4版(2010年1月28日釋出)。

其名稱與音樂上的八度沒有直接關係。該軟體乃是以一位早期開發群的成員,同時也以敏於處理數值逼近問題著稱的前教授命名。

技術細節[编辑]

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中運行也是可能的,但設置較爲複雜。[3]

特殊功能[编辑]

變數及函式名稱自動補齊

在命令列按下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以提供初步的LISPunwind_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使用的程序。

  1. 矩陣為基礎資料型別之一
  2. 內建支援複數
  3. 內建功能強大的數學函式及可擴充的函式庫
  4. 使用者可自定函式

参考文献[编辑]

  1. ^ ftp://ftp.gnu.org/gnu/octave/
  2. ^ About Octave. [2010-11-21]. 
  3. ^ Installing MacOS X Bundle. GNU Octave. [2012-03-12]. 

外部連結[编辑]

Wikibooks-logo.svg
您可以在維基教科書中查找此百科条目的相關電子教程:

参见[编辑]