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中索引元素的方法有:數組索引與邏輯索引
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM