在 Octave 中有許多種類型(type)的變數,例如實數(real)或複數(complex)的純量(scalars)或矩陣(matrices)、字串(character strings)、資料結構(data structure)以及可以包含各種類型的巢狀陣列(cell arrays)。

Octave 亦允許使用者透過 C++ 程式語言自行撰寫程式碼定義新的變數類型,新增變數類型並不需要將所有的 Octave 程式碼重新編譯,在某些系統中新的變數類型可以在 Octave 執行時動態載入(可參考動態載入函數、自訂變數類型)。

typeinfo (expr)

typeifno(expr) 函數會傳回 expr 的變數類型(type),若是沒有指定 expr 參數,則回傳目前所有的支援的變數類型。

內建的資料類型(Built-in Data Types)

Octave 內建的資料類型包含實數(real)與複數(complex)的純量(scalars)與矩陣(matrices)、ranges、字串(character strings)、資料結構(data structure)與巢狀陣列(cell array),在未來 Octave 亦有可能再新增加其他的資料類型。

變數的資料類型可以透過以下的函數查詢與轉換:

class (expr)
class (s, id)
class (s, id, p, ...)

class(expr) 可以查詢 expr 的類別(class),class(s, id) 則是產生新的類別,參數 s 是指定新類別的資料結構(structure),id 是新類別的名稱。其餘的參數是用來指定此類別的父類別。

isa (x, class)

isa(x, class) 函數可以用來測試 x 的類別是否為 class

cast (val, type)

cast(val, type) 函數可將 val 轉換為 type 類型。

typecast (x, type)

typecast(x, type)x 轉換為 type 類型,但不變更 x 所儲存的資料。type 參數可以是下列其中之一: "uint8""uint16""uint32""uint64""int8""int16""int32""int64""single""double"。例如:

x = uint16 ([1, 65535]);
typecast (x, "uint8")
swapbytes (x)

swapbytes(x) 函數可將 x 的值在 little endian 與 big endian 之間轉換。例如:

swapbytes (uint16 (1:4))

以下介紹 Octave 中內建的資料類型:

數值(Numeric Objects)

Octave 中的數值變數包含實數、複數與整數的純量與矩陣,所有 Octave 內建的浮點數資料都是以雙精度浮點數(double precision numbers)的方式儲存,在使用 IEEE 浮點格式的系統中,可儲存的浮點數範圍大約在 2.2251e-3081.7977e+308 之間,relative precision 大約為 2.2204e-16,精確的數值儲存在 realminrealmaxeps 變數中。

在 Octave 中的矩陣可以指定為任何的大小,甚至可以動態改變。Octave 中提供一系列的矩陣操作功能,進一步的說明請參考數值資料。

缺失資料(Missing Data)

缺失資料在 Octave 可以使用 NA(Not Available)來表示:

NA
NA (n)
NA (n, m)
NA (n, m, k, ...)
NA (..., class)

NA 函數可以產生 NA 的純量,NA(n)nnNA 方陣,NA(n, m)nmNA 矩陣,NA(n, m, k, ...) 是高維度的 NA 陣列,class 參數是指定傳回值的類型,可指定 "double""single",例如指定一個 NA 值:

na_val = NA

33NA 矩陣:

na_mat = NA(3)
isna (x)

isna() 函數可以檢查一個值是否為 NA,例如:

isna ([13, Inf, NA, NaN])
一個 NA 值不會等於另一個 NA 值(NA != NA),若要檢查一個值是不是 NA 必須使用 isna() 函數。

字串(String Objects)

Octave 的字串是以單引號或雙引號包起來的一串字元,目前來說 Octave 是將字串儲存乘矩陣的形式,因此在矩陣上可以用的索引運算亦可用於字串上,關於字串的說明請參考字串資料。

資料結構(Data Structure Objects)

Octave 的資料結構可以讓使用者將相關但不同類型的資料結合在一起,目前 Octave 是以關聯性陣列的方式實做,而其語法類似於 C 語言的 structures,關於資料結構請參考資料容器。

巢狀陣列(Cell Array Objects)

Octave 的巢狀陣列是一個一般性的陣列,可以存放各種不同的類型的資料,請參考資料容器。