MATLAB程式設計/布林型和有理數
大量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