MATLAB 程式設計/GNU Octave
| 此頁面已從另一個專案 轉移,需要進行 書籍化. 此頁面要麼需要修改以成為書籍的主頁,要麼需要修改以符合其將要包含的書籍的“本地樣式指南”。 書籍化後,請刪除 {{bookify}}。 |
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 語言是一種解釋型程式語言。它是一種結構化程式語言(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