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