跳轉到內容

MATLAB 程式設計/GNU Octave

來自華夏公益教科書,開放的書籍,開放的世界


Octave 是一個免費的計算機程式,用於執行數值計算(作為 GNU 專案的一部分建立),它與 MATLAB 大致相容。

該專案始於 1988 年。起初它打算作為化學反應器設計課程的輔助工具。約翰·W·伊頓於 1992 年開始實際開發。第一個 Alpha 版本可以追溯到 1993 年 1 月 4 日,1994 年 2 月 17 日釋出了 1.0 版本。

這個名字與音樂無關。它是 Octave 作者之一的前任教授的名字,該教授以能夠快速找到數值問題的良好近似值而聞名。

技術細節

[編輯 | 編輯原始碼]
  • Octave 使用 STL 庫用 C++ 編寫。
  • Octave 具有一個解釋 Octave 語言的直譯器。
  • Octave 本身可以透過動態載入模組進行擴充套件。
  • Octave 直譯器與 gnuplot 和 Grace 軟體協同工作以建立繪圖、圖形和圖表,以及儲存或列印它們。

Octave 語言

[編輯 | 編輯原始碼]

Octave 語言是一種解釋型程式語言。它是一種結構化程式語言(C 語言就是一個例子),支援許多常見的 C 標準庫構造,並且可以擴充套件以支援 UNIX 系統呼叫和函式。但是,它不支援按引用傳遞引數。

Octave 程式由一系列函式呼叫或指令碼組成。該語言基於矩陣,並提供各種矩陣操作函式。它不是面向物件的,但支援資料結構。

它的語法與 MATLAB 非常相似,仔細編寫指令碼將使其能夠在 Octave 和 MATLAB 上執行。

由於 Octave 是根據 GNU 通用公共許可證釋出的,因此可以免費複製和使用。該程式在大多數 Unix 和類 Unix 作業系統以及 Microsoft Windows 上執行。

顯著特點

[編輯 | 編輯原始碼]
  • 命令和變數名補全

在命令列中輸入 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
  body
unwind_protect_cleanup
  cleanup
end_unwind_protect
  • 可變長度引數列表

Octave 擁有一個處理接受未指定數量引數(無明確上限)的函式的機制。例如

以下是使用新語法列印標題和未指定數量值的函式示例

function foo (heading, ...)
  disp (heading);
  va_start ();
  while (--nargin)
    disp (va_arg ());
  endwhile
endfunction
  • 可變長度返回值列表

Octave 還擁有一個處理返回未指定數量值的函式的機制。例如

function [...] = foo (n)
  for i = 1:n
    vr_val (i);
  endfor
endfunction

參考文獻

[編輯 | 編輯原始碼]
華夏公益教科書