跳轉到內容

MATLAB程式設計/布林型和有理數

來自Wikibooks,開放世界的開放書籍


大量MATLAB函式是對兩種型別的數字進行操作:有理數布林數

有理數是我們通常想到的數字。1、3和-4.5都是有理數。預設情況下,MATLAB將有理數儲存為雙精度浮點數,它表示儲存在每個變數中的小數位數的度量,以及值的準確度。請注意,MATLAB使用有理數近似表示無理數(如π),除非使用符號數學工具箱。有關詳細資訊,請參閱該部分。

布林數要麼為“TRUE”(真),要麼為“FALSE”(假),分別用MATLAB中的1和0表示。MATLAB中的布林變數實際上可以與雙精度浮點數互換,因為布林運算子可以與雙精度浮點數陣列一起使用,反之亦然。在這種情況下,任何非零數字都被視為“TRUE”(真)。

大多數有理數運算子也適用於複數。但是,複數不能像實數有理數那樣與布林值互換。

注意:MATLAB將布林值稱為“邏輯值”,並且在程式碼或文件中不使用“布林”一詞。

單值的有理數運算子

[編輯 | 編輯原始碼]

MATLAB具有所有標準的有理數運算子。但是,需要注意的是,除非另有說明,否則所有有理數運算都針對整個陣列執行,並使用矩陣定義。因此,即使我們現在只討論單值運算,當我們進入陣列時,區分矩陣和逐元素乘法(例如)將非常重要:加法、減法、乘法、除法、指數運算子。

 %addition
 a = 1 + 2

 %subtraction
 b = 2 - 1

 %matrix multiplication
 c = a * b

 %matrix division (pseudoinverse)
 d = a / b

 %exponentiation
 e = a ^ b

模運算函式返回引數相除時的餘數,因此a模b表示a除以b的餘數。

 %modulo
 remainder = mod(a,b)

除了模運算之外,所有這些函式都適用於複數。

關係運算符

[編輯 | 編輯原始碼]

相等運算子'=='如果兩個引數相等,則返回“TRUE”(真)(1)。這不能與賦值運算子'='混淆,後者將值賦給變數。

 >> %relational 
 >>a=5;b=5;
 >>a==b
 ans = 
  logical
  1
 %Assignment
 >>a=5;b=3;
 >>a=b
 a = 3

請注意,在第一種情況下,返回的值為1(真),但在第二種情況下,a被賦予b的值。

大於、小於、大於等於、小於等於分別由>、<、>=、<=給出。它們都返回真或假的值。示例

 >>a=3;b=5;
 >>a<=b
 ans = 1
 >>b<a
 ans = 0

單值的布林運算子

[編輯 | 編輯原始碼]

布林運算子為&(布林AND)、|(布林OR)和~(布林NOT/否定)。值為零表示假,任何非零值(通常為1)都被視為真。

以下是它們的作用

 >>%boolean AND
 >> y = 1 & 0
 y = 0
 >> y = 1 & 1
 y = 1
 >>%boolean OR
 >> y = 1 | 0
 y = 1
 >> y = 1 | 1
 y = 1

MATLAB中的否定運算由符號~給出,它將任何FALSE(假)值轉換為TRUE(真),反之亦然。

 >> c = (a == b)
 c = 1
 >> ~c
 ans = 0

這是必要的,因為條件語句(IF/SWITCH/TRY)和迴圈語句(FOR/WHILE)始終查詢為TRUE(真)的語句,因此,如果您希望它僅在語句為FALSE(假)時執行某些操作,則需要使用否定運算將其更改為真語句。

除非AND或OR語句在括號中,否則NOT運算子在MATLAB中優先於AND和OR運算子。

 >> y = ~1 & 0
 y = 0
 >> y = ~(1&0)
 y = 1



參考文獻

[編輯 | 編輯原始碼]

[1]

  1. https://web.archive.org/web/20210322123642/https://www.maths.unsw.edu.au/sites/default/files/MatlabSelfPaced/lesson8/MatlabLesson8_Logic.html
華夏公益教科書