MATLAB - 邏輯運算



MATLAB 提供兩種型別的邏輯運算子和函式:

  • 逐元素運算 - 這些運算子作用於邏輯陣列的對應元素。

  • 短路運算 - 這些運算子作用於標量邏輯表示式。

逐元素邏輯運算子對邏輯陣列進行逐元素運算。符號 &、| 和 ~ 分別是邏輯陣列運算子 AND、OR 和 NOT。

短路邏輯運算子允許對邏輯運算進行短路。符號 && 和 || 分別是邏輯短路運算子 AND 和 OR。

示例

建立一個指令碼檔案並輸入以下程式碼:

a = 5;
b = 20;
   if ( a && b )
      disp('Line 1 - Condition is true');
   end
   if ( a || b )
      disp('Line 2 - Condition is true');
   end
   
   % lets change the value of  a and b 
   a = 0;
   b = 10;
   
   if ( a && b )
      disp('Line 3 - Condition is true');
   else
      disp('Line 3 - Condition is not true');
   end
   
   if (~(a && b))
   
      disp('Line 4 - Condition is true');
   end

執行檔案後,將產生以下結果:

Line 1 - Condition is true
Line 2 - Condition is true
Line 3 - Condition is not true
Line 4 - Condition is true

邏輯運算函式

除了上述邏輯運算子外,MATLAB 還提供以下命令或函式用於相同的目的:

序號 函式和描述
1

and(A, B)

查詢陣列或標量輸入的邏輯 AND;對所有輸入陣列 A、B 等執行邏輯 AND,並返回一個包含設定為邏輯 1(真)或邏輯 0(假)的元素的陣列。如果所有輸入陣列在同一陣列位置都包含非零元素,則輸出陣列的元素設定為 1。否則,該元素設定為 0。

2

not(A)

查詢陣列或標量輸入的邏輯 NOT;對輸入陣列 A 執行邏輯 NOT,並返回一個包含設定為邏輯 1(真)或邏輯 0(假)的元素的陣列。如果輸入陣列在同一陣列位置包含零值元素,則輸出陣列的元素設定為 1。否則,該元素設定為 0。

3

or(A, B)

查詢陣列或標量輸入的邏輯 OR;對所有輸入陣列 A、B 等執行邏輯 OR,並返回一個包含設定為邏輯 1(真)或邏輯 0(假)的元素的陣列。如果任何輸入陣列在同一陣列位置包含非零元素,則輸出陣列的元素設定為 1。否則,該元素設定為 0。

4

xor(A, B)

邏輯異或;對陣列 A 和 B 的對應元素執行異或運算。如果 A(i,j,...) 或 B(i,j,...) 非零,但兩者並非都非零,則結果元素 C(i,j,...) 為邏輯真 (1)。

5

all(A)

確定陣列 A 的所有陣列元素是否為非零或真。

  • 如果 A 是向量,則如果所有元素都非零,all(A) 返回邏輯 1(真);如果一個或多個元素為零,則返回邏輯 0(假)。

  • 如果 A 是非空矩陣,則 all(A) 將 A 的列視為向量,返回一個由邏輯 1 和 0 組成的行向量。

  • 如果 A 是空的 0×0 矩陣,則 all(A) 返回邏輯 1(真)。

  • 如果 A 是多維陣列,則 all(A) 沿第一個非單一維度進行運算,並返回一個邏輯值的陣列。此維度的尺寸減小到 1,而所有其他維度的尺寸保持不變。

6

all(A, dim)

沿由標量 *dim* 指定的 A 的維度進行測試。

7

any(A)

確定是否有任何陣列元素是非零的;測試陣列沿各個維度的任何元素是否為非零數或邏輯 1(真)。any 函式忽略為 NaN(非數字)的條目。

  • 如果 A 是向量,則如果 A 的任何元素是非零數或邏輯 1(真),則 any(A) 返回邏輯 1(真);如果所有元素都為零,則返回邏輯 0(假)。

  • 如果 A 是非空矩陣,則 any(A) 將 A 的列視為向量,返回一個由邏輯 1 和 0 組成的行向量。

  • 如果 A 是空的 0×0 矩陣,則 any(A) 返回邏輯 0(假)。

  • 如果 A 是多維陣列,則 any(A) 沿第一個非單一維度進行運算,並返回一個邏輯值的陣列。此維度的尺寸減小到 1,而所有其他維度的尺寸保持不變。

8

any(A,dim)

沿由標量 *dim* 指定的 A 的維度進行測試。

9

邏輯 0(假)

10

false(n)

是一個 n×n 的邏輯零矩陣

11

false(m, n)

是一個 m×n 的邏輯零矩陣。

12

false(m, n, p, ...)

是一個 m×n×p×... 的邏輯零陣列。

13

false(size(A))

是一個與陣列 A 大小相同的邏輯零陣列。

14

false(...,'like',p)

是一個與邏輯陣列 p 資料型別和稀疏性相同的邏輯零陣列。

15

ind = find(X)

查詢非零元素的索引和值;找到陣列 X 的所有非零元素,並在向量中返回這些元素的線性索引。如果 X 是行向量,則返回的向量是行向量;否則,它返回列向量。如果 X 不包含非零元素或為空陣列,則返回空陣列。

16

ind = find(X, k)

ind = find(X, k, 'first')

最多返回與 X 的非零條目對應的前 k 個索引。k 必須是正整數,但可以是任何數值資料型別。

17

ind = find(X, k, 'last')

最多返回與 X 的非零條目對應的最後 k 個索引。

18

[row,col] = find(X, ...)

返回矩陣 X 中非零條目的行和列索引。此語法在處理稀疏矩陣時特別有用。如果 X 是 N 維陣列且 N > 2,則 col 包含列的線性索引。

19

[row,col,v] = find(X, ...)

返回 X 中非零條目的列向量或行向量 v,以及行和列索引。如果 X 是邏輯表示式,則 v 是邏輯陣列。輸出 v 包含透過計算表示式 X 獲得的邏輯陣列的非零元素。

20

islogical(A)

確定輸入是否為邏輯陣列;如果 A 是邏輯陣列,則返回真,否則返回假。如果 A 是從邏輯類派生的類的例項,則它也返回真。

21

logical(A)

將數值轉換為邏輯值;返回一個可用於邏輯索引或邏輯測試的陣列。

22

邏輯 1(真)

23

true(n)

是一個 n×n 的邏輯 1 矩陣。

24

true(m, n)

是一個 m×n 的邏輯 1 矩陣。

25

true(m, n, p, ...)

是一個 m×n×p×… 的邏輯 1 陣列。

26

true(size(A))

是一個與陣列 A 大小相同的邏輯 1 陣列。

27

true(...,'like', p)

是一個與邏輯陣列 p 具有相同資料型別和稀疏性的邏輯 1 陣列。

matlab_operators.htm
廣告
© . All rights reserved.