算數運算子(Arithmetic Operators)

Octave 中的算術運算子(Arithmetic Operators)可以用於純量或矩陣:

  • x + y:加法,若 xy 皆為矩陣,則兩個矩陣必須有相同的大小,若一個是純量另一個是矩陣,則會將矩陣中每一個元素與純量相加。
  • x .+ y:元素加法,此運算子與 +. 相同。
  • x - y:減法,若 xy 皆為矩陣,則兩個矩陣必須有相同的大小,若一個是純量另一個是矩陣,則會將矩陣中每一個元素與純量相減。
  • x .- y:元素減法,此運算子與 -. 相同。
  • x * y:乘法,若 xy 皆為矩陣,則 x 的行數必須等於 y 的列數。
  • x .* y:元素乘法,若 xy 皆為矩陣,則兩個矩陣必須有相同的大小。
  • x / y:右除法,其作用相當於 (inverse (y') * x')',但其不需要計算 y'。若係數矩陣不是方陣或為 singular,則會計算 minimum norm solution。
  • x ./y:元素右除法。
  • x y:左除法,其作用相當於 inverse (x) * y,但不需要計算 inverse(x)。若係數矩陣不是方陣或為 singular,則會計算 minimum norm solution。
  • x . y:元素左除法,y 中的每個元素會除以 x 中所對應的元素。
  • x ^ yx ** y:指數,若 xy 皆為純量,則傳回 xy 次方;若 x 為純量,y 為方陣,則會使用 eigenvalue expansion 計算結果;若 x 為方陣,y 為一個整數,則會傳回 x 連續 y 次乘積的結果(若 y 不是整數,則會使用 eigenvalue expansion);若 xy 皆為矩陣,則會產生錯誤。
  • x .^ yx .** y:元素指數,若 xy 皆為矩陣,則兩個矩陣必須有相同的大小。
  • -x:負數。
  • +x:正數,這個運算子基本上沒作用。
  • x':共軛轉置(conjugate transpose),對於實數而言,這個運算子等同於轉置(transpose)運算子,而對於複數,此運算子等同於 conj (x.')
  • x.':轉置(transpose)。

由於 Octave 的元素運算子是以小數點開頭,因此在使用時有可能會發生一些模稜兩可的情況,例如:

1./m

因為這個小數點可以被解釋為常數 1 的小數點或是元素右除法,為了避免混淆,Octave 碰到這種情況會把他解釋為

(1) ./ m

而不是

(1.) / m

比較運算子(Comparison Operators)

比較運算子(Comparison Operators)可以比較兩個數值之間的關係,所有 Octave 的比較運算子在結果是 true 時會傳回 0,而結果是 false 時則傳回 1,若傳入值為矩陣,則會對矩陣中的每個元素進行比較,例如:

[1, 2; 3, 4] == [1, 3; 2, 4]

輸出為

ans =

   1   0
   0   1

若有一個運算元是矩陣而另外一個是純量,則會將此純量依序與矩陣中的元素進行比較,其傳回值為一個與運算元矩陣相同大小的矩陣。以下是一些 Octave 中的比較運算子:

  • x < y:判斷 x 是否小於 y
  • x <= y:判斷 x 是否小於或等於 y
  • x == y:判斷 x 是否等於 y
  • x >= y:判斷 x 是否大於或等於 y
  • x > y:判斷 x 是否大於 y
  • x != yx ~= y:判斷 x 是否不等於 y

這些運算子是用於數值間的比較,無法用於字串,字串之間的比較可以使用 strcmp() 函數,請參考字串資料。

isequal (x1, x2, ...)

isequal(x1, x2, ...) 函數會判斷 x1, x2, ... 是否相等。

isequalwithequalnans (x1, x2, ...)

isequalwithequalnans(x1, x2, ...) 函數會在 NaN == NaN 的判斷條件下,判斷 x1, x2, ... 是否相等。