邏輯掩蔽
MATLAB 支援使用邏輯掩碼,以便在不使用 for 迴圈或 if 語句的情況下對矩陣執行選擇。
邏輯掩碼定義為僅由 1
和 0
組成的矩陣。
例如:
mask = [1 0 0; 0 1 0; 0 0 1];
是表示單位矩陣的邏輯矩陣。
我們可以使用謂詞生成邏輯掩碼來查詢矩陣。
A = [1 2 3; 4 5 6; 7 8 9];
B = A > 4;
我們首先建立一個 3x3 矩陣 A
,其中包含數字 1 到 9.然後我們查詢 A
以獲取大於 4 的值,並將結果儲存在一個名為 B
的新矩陣中。
B
是一種形式的邏輯矩陣:
B = [0 0 0
0 1 1
1 1 1]
或者當謂詞 A > 4
為真時 1
。而且當它是假的時候。
我們可以使用邏輯矩陣來訪問矩陣的元素。如果使用邏輯矩陣來選擇元素,則將在你選擇的矩陣中選擇 1
出現在邏輯矩陣中的索引。
使用上面的相同 B
,我們可以執行以下操作:
C = [0 0 0; 0 0 0; 0 0 0];
C(B) = 5;
這將選擇 C
的所有元素,其中 B
在該索引中具有 1
。然後將 C
中的那些指數設定為 5
。
我們的 C
現在看起來像:
C = [0 0 0
0 5 5
5 5 5]
我們可以通過使用邏輯掩碼來減少包含 if
和 for
的複雜程式碼塊。
採用非向量化程式碼:
A = [1 3 5; 7 9 11; 11 9 7];
for j = 1:length(A)
if A(j) > 5
A(j) = A(j) - 2;
end
end
這可以使用邏輯掩碼縮短到以下程式碼:
A = [1 3 5; 7 9 11; 11 9 7];
B = A > 5;
A(B) = A(B) - 2;
甚至更短:
A = [1 3 5; 7 9 11; 11 9 7];
A(A > 5) = A(A > 5) - 2;