MATLAB邏輯運算

2018-08-11 10:26 更新

MATLAB邏輯運算都是針對元素的操作,運算結果是特殊的邏輯數組;在邏輯分析時,邏輯(真)用1表示,邏輯假用0表示,邏輯運算中所有的非零元素作為1處理。

注意:

使用MATLAB邏輯運算時的語法不要與C語言、Java等編程語言混淆。

MATLAB 有兩種類型的邏輯運算符和函數:

  • Element-wise - 這些運算上的對應元素的邏輯陣列。
  • Short-circuit - 這些運算上的標量,邏輯表達式。

MATLAB元素明智的邏輯運算符操作元素元素邏輯陣列:符號&,|和?邏輯數組運算符AND,OR,NOT。

MATLAB允許短路的短路邏輯運算符,邏輯運算:符號&&和| |是短路邏輯符AND和OR。

詳細例子


在MATLAB中建立一個腳本文件,并輸入下面的代碼:

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邏輯運算功能


除了在上述的邏輯運算符,MATLAB 提供下面的命令或函數用于同樣的目的:

函數描述
and(A, B)查找數組或標量輸入的邏輯和;執(zhí)行所有輸入數組A,B等的邏輯AND,并返回包含設置為邏輯1(真)或邏輯0(假)的元素的數組。如果所有輸入數組在同一個數組位置都包含一個非零元素,那么輸出數組的一個元素將被設置為1;否則,該元素設置為0。
not(A)查找數組或標量輸入的邏輯NOT;執(zhí)行輸入數組A的邏輯NOT,并返回包含設置為邏輯1(真)或邏輯0(假)的元素的數組。如果輸入數組在同一個數組位置包含一個零值元素,那么輸出數組的一個元素將被設置為1;否則,該元素設置為0。
or(A, B)查找數組或標量輸入的邏輯或; 執(zhí)行所有輸入數組A,B等的邏輯或,并返回包含設置為邏輯1(真)或邏輯0(假)的元素的數組。如果任何輸入數組在同一個數組位置包含一個非零元素,則輸出數組的一個元素設置為1;否則,該元素設置為0。
xor(A, B)邏輯異或; 對數組A和B的相應元素執(zhí)行異或運算。如果A(i,j,...)或B(i,j)...,則所得到的元素C(i,j,...) j,...),但不是兩者都是非零的。
all(A)
確定數組A的所有數組元素是否為非零或真。
  • 如果A是向量,則如果所有元素都為非零,則所有(A)返回邏輯1(真),如果一個或多個元素為零,則返回邏輯0(假)。

  • 如果A是非空矩陣,則所有(A)將A的列視為向量,返回邏輯1和0的行向量。

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

  • 如果A是一個多維數組,則所有(A)都沿著第一個非指定維度行事,并返回一個邏輯值數組。 該尺寸的尺寸減小到1,而所有其他尺寸的尺寸保持不變。這個維度的大小減少到1,而其他所有維度的尺寸保持不變。

all(A, dim)通過標量dim沿著維數A的維度進行測試。
any(A)
確定數組元素是否為非零;測試數組中不同維度的元素是否為非零數字,或是邏輯1(真)。 任何函數忽略NaN(不是數字)的條目。
  • 如果A是向量,任何(A)如果A的任何元素是非零數或邏輯1(真),則返回邏輯1(真),如果所有元素為零,則返回邏輯0(假)。

  • 如果A是非空矩陣,則任何(A)將A的列視為向量,返回邏輯1和0的行向量。

  • 如果A是一個空的0x0矩陣,任何(A)返回邏輯0(假)。

  • 如果A是一個多維數組,則任何(A)都沿著第一個非整數維進行操作,并返回一個邏輯值數組。該維度的尺寸減小到1,而所有其他維度的尺寸保持不變。

any(A,dim)通過標量dim沿著維數A的維度進行測試。
false邏輯0(假)
false(n)是邏輯0的n×n矩陣
false(m, n)是邏輯0的一個m×n矩陣。
false(m, n, p, ...)是由邏輯0的逐列逐列數組。
false(size(A))是與數組A大小相同的邏輯零數組。
false(...,'like',p)是與邏輯陣列p相同的數據類型和稀疏性的邏輯零數組。
ind = find(X)查找非零元素的索引和值;定位數組X的所有非零元素,并返回向量中這些元素的線性索引。 如果X是行向量,則返回的向量是行向量; 否則返回列向量。如果X不包含非零元素或是空數組,則返回一個空數組。
ind = find(X, k)

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

最多返回與X的非零條目相對應的前k個索引。k必須是正整數,但它可以是任何數字數據類型。
ind = find(X, k, 'last')最多返回與X的非零條目相對應的最后k個索引。
[row,col] = find(X, ...)返回矩陣X中非零條目的行和列索引。使用稀疏矩陣時,此語法特別有用。 如果X是N>2的N維數組,col包含列的線性索引。
[row,col,v] = find(X, ...)返回X中非零條目的列或行向量v,以及行和列索引。如果X是邏輯表達式,則v是邏輯數組。 輸出v包含通過評估表達式X獲得的邏輯數組的非零元素。
islogical(A)確定輸入是否為邏輯數組;如果A是邏輯數組,返回true,否則返回false。 如果A是從邏輯類派生的類的實例,它也返回true。
logical(A)將數值轉換為邏輯;返回一個可用于邏輯索引或邏輯測試的數組。
true邏輯1(真)
true(n)是一個n×n邏輯矩陣。
true(m, n)是一個mxn邏輯矩陣。
true(m, n, p, ...)是由邏輯1的逐列逐列數組。
true(size(A))是與數組A大小相同的邏輯數組。
true(...,'like', p)是與邏輯陣列p相同的數據類型和稀疏性的邏輯陣列。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號