判斷數值類型

數值在運算時常常會因為遇到不同類型的數值而轉換,而在很多情況下不同的變數類型會產生不同的結果,例如內建的 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 的維度,否則傳回 0tol 參數用來設定容許的誤差值,判定 x 是否為對稱矩陣是依據

norm (x - x.’, inf) / norm (x, inf) < tol

來判定的,若省略 tol 參數,則會使用系統的精確度。

isdefinite (x, tol)

判斷 x 是否為正定對稱矩陣(symmetric positive definite),若為正定對稱矩陣則傳回 1,否則傳回 -1tol 參數用來設定容許的誤差值,若省略 tol 參數,則會使用 100 倍的系統精確度。

islogical (x)

判斷 x 是否為邏輯值。

isprime (x)

判斷 x 是否為質數。