這幾天學習了matlab的邏輯數組功能,總的感覺就有兩點:
第一,通過對原來的數組a進行邏輯判斷后得到邏輯數組b
第二,邏輯數組進行某種運算符操作又回到原數組類型
第三,利用邏輯數組mask功能
測試如下:
disp('邏輯數組學習及應用'); a = [1 2 3;4 5 6; 7 8 9]; b = a > 4 ;%數組中各個元素與4作比較,邏輯為真則為1 whos
結果:
第二,當執行 c = b + 0后,c 數組為:
第三,它在算術運算中能提供一個屏蔽(mask)。屏蔽(mask)是指一個數組, 它從另一個數組選擇所需的元素參與運算。 指定的運算只在選擇的元素上執行,
而不執行余下的元素。
未使用時,對數組中>4求平方根。
clc; clear; disp('邏輯數組學習及應用'); a = [1 2 3;4 5 6; 7 8 9]; for ii = 1:size(a,1) for jj = 1:size(a,2) if a(ii,jj) > 4 a(ii,jj)=sqrt(a(ii,jj)); %對數組中>4的求平方根 end end end a
結果:
a =
1.0000 2.0000 3.0000
4.0000 2.2361 2.4495
2.6458 2.8284 3.0000
使用后:
disp('邏輯數組學習及應用'); a = [1 2 3;4 5 6; 7 8 9]; b = a > 4; %對數組中>4的邏輯判定,得到邏輯數組 a(b) =sqrt(a(b)); a
結果同上。
記得項目中有一個功能是首先將數組元素中>0的選出變為新數組,繼而對其排序,可以考慮用邏輯數組功能,在這里記下了