设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1585|回复: 0

Matlab中数组索引与逻辑索引

[复制链接]

36

主题

337

金钱

521

积分

初级用户

发表于 2019-11-7 15:25:43 | 显示全部楼层 |阅读模式

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中索引元素的方法有:数组索引与逻辑索引
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表