數值在運算時常常會因為遇到不同類型的數值而轉換,而在很多情況下不同的變數類型會產生不同的結果,例如內建的 abs() 函數,當輸入值是實數時,它會傳回數值的絕對值,而當輸入的值是複數時,它會傳回此複數的長度。以下是 abs() 函數的定義:
function a = abs (x) if (isreal (x)) a = sign (x) .* x; elseif (iscomplex (x)) a = sqrt (real(x).^2 + imag(x).^2); endif endfunction
Octave 有許多函數可以查詢數值目前的類型:
isnumeric (x)
判斷 x
是否為數值物件。
isreal (x)
判斷 x
是否為實數。
isfloat (x)
判斷 x
是否為浮點數。
iscomplex (x)
判斷 x
是否為複數。
ismatrix (x)
判斷 x
是否為矩陣。
isvector (x)
判斷 x
是否為向量。
isscalar (x)
判斷 x
是否為純量。
issquare (x)
判斷 x
是否為方陣(square matrix),若為方陣則傳回 x
的維度,否則傳回 0
。
issymmetric (x, tol)
判斷 x
是否為對稱矩陣(symmetric matrix),若為對稱矩陣則傳回 x
的維度,否則傳回 0
,tol
參數用來設定容許的誤差值,判定 x
是否為對稱矩陣是依據
norm (x - x.’, inf) / norm (x, inf) < tol
來判定的,若省略 tol
參數,則會使用系統的精確度。
isdefinite (x, tol)
判斷 x
是否為正定對稱矩陣(symmetric positive definite),若為正定對稱矩陣則傳回 1
,否則傳回 -1
,tol
參數用來設定容許的誤差值,若省略 tol
參數,則會使用 100
倍的系統精確度。
islogical (x)
判斷 x
是否為邏輯值。
isprime (x)
判斷 x
是否為質數。