天天看點

Matlab中數組索引與邏輯索引

Matlab中數組索引與邏輯索引 1) 數組索引: 單下标索引: 針對向量的索引 例子: >> a = [1 2 3] a = 1 2 3     %% 注釋:索引一個元素 >> a(2) ans = 2     %% 索引多個元素 >> a([2 3]) ans = 2 3     %% 矩陣向量化 >> A = [1:3;4:6;7:9] A =     1 2 3     4 5 6     7 8 9     >> A(:) ans =     1 4 7     2 5 8     3 6 9 -------------------------- 線性索引: 針對矩陣的索引 例子: >> A = [1:3;4:6;7:9] A = 1 2 3 4 5 6 7 8 9 %% 索引第五個元素 >> A(5) ans = 5     >> A(7) = 0 A = 1 2 0 4 5 6 7 8 9 由上可知,矩陣的單下标索引: 矩陣從第一列起,從上至下,從左至右對應索引1,2,3,... 可以認為Matlab将數組視為單列向量,其中每一列附加到前一列的底部,按照對單列向量的索引方式 -------------------------- 多下标索引:針對矩陣的索引 例子: >> A = [1 2 3;4 5 6] A = 1 2 3 4 5 6 %% 索引第二列元素 >> A(:,2) ans = 2 5     %% 索引第二行元素 >> A(2,:) ans = 4 5 6     %% 第二行第二列的元素指派 >> A(2,2) = 0 A = 1 2 3 4 0 6   %% 索引第一列與第二列元素,構成矩陣 >> A(:,[1 3]) ans = 1 3 4 6   %% 索引行列交叉的元素,構成矩陣 >> A([1 2],[1 3]) ans = 1 3 4 6 綜上所述:數組索引有單下标索引與多下标索引,其中線性索引是數組索引的特例   2) 邏輯索引:通過使用0-1邏輯矩陣來索引矩陣中的元素 首先,需要指明一個細節 請看: >> A = [1 1 0;1 1 1;0 0 0] A =       1 1 0     1 1 1     0 0 0     >> B = logical(A) B = 1 1 0 1 1 1 0 0 0     %% 檢視A,B元素類型(Class)   >> whos A Name Size Bytes Class  A   3x3  72  double     >> whos B Name Size Bytes Class  B   3x3   9  logical     %% >> C = [2 3 4;5 6 7;9 10 8] C = 2 3 4 5 6 7 9 10 8     %% >> C(A) Error %% 索引對應邏輯數組B中元素為1(Boolean為真)的位置   >> C(B) ans = 2 5 3 6 7 可以看到:邏輯索引的元素值構成列向量 由上可知:邏輯索引時對應邏輯數組中元素為1(Boolean為真)的位置被索引形成列向量 注意:邏輯數組與被索引數組要求同形即行數與列數的次元對應,才是有意義的   綜上所述:Matlab中索引元素的方法有:數組索引與邏輯索引  

轉載于:https://www.cnblogs.com/WJWnature/p/11215163.html

繼續閱讀