MATLAB中的逻辑索引与数组索引
来源:互联网 发布:长期招异地淘宝客服 编辑:程序博客网 时间:2024/05/22 19:44
常见矩阵元素索引方法
矩阵作为MATLAB中的基本单位,灵活地实现对其元素的索引是有效处理矩阵的必要基础。显然地,MATLAB也的确提供了很多的矩阵元素索引方法12。常见的矩阵元素索引方法分别如下所示:
逻辑索引
逻辑索引通过使用元素为0或1的逻辑矩阵来索引矩阵a中的元素,因此它们的维数必须相同。具体例子如下:
>> a = [1:3;4:6;7:9]a = 1 2 3 4 5 6 7 8 9>> threshold = a>5threshold = 0 0 0 0 0 1 1 1 1>> a(threshold) = 0a = 1 2 3 4 5 0 0 0 0
也可以直接写成如下形式:
>> a = [1:3;4:6;7:9]a = 1 2 3 4 5 6 7 8 9>> a(a>5) = 0a = 1 2 3 4 5 0 0 0 0
数组索引
根据参考书籍3中分类,数组索引可以划分为:单下标索引和多下标索引。单下标索引的具体例子如下:
>> a = 1:6a = 1 2 3 4 5 6>> a(3) = 5a = 1 2 5 4 5 6>> a([2,4])=[4,2]a = 1 4 5 2 5 6>> b = [1:3;4:6;7:9]b = 1 2 3 4 5 6 7 8 9>> b(:)ans = 1 4 7 2 5 8 3 6 9
在MATLAB中,单个数值可以理解为一个元素的1×1的矩阵,因此参考文献4中所谓的线性索引也不过是数组索引的一种特例。从上边的例子可以看出,单下标索引中的冒号索引可以实现多维矩阵的列向量化,这和多下标索引中的冒号索引又不尽相同。
多下标索引的例子具体如下:
>> a = [1:3;4:6;7:9]a = 1 2 3 4 5 6 7 8 9>> a(2,2) = 0a = 1 2 3 4 0 6 7 8 9>> a([1 3],[2 3])ans = 2 3 8 9>> a(:,1)ans = 1 4 7>> a(:,[1,3])ans = 1 3 4 6 7 9>> a(1,:)ans = 1 2 3>> a([1,3],:)ans = 1 2 3 7 8 9
从上边的例子可以看出,单下标索引和多下标索引的冒号索引的作用是不尽相同的。
综上所述,MATLAB中矩阵元素的索引方法分为两种:逻辑索引和数组索引。其中,数组索引又可以分为单下标索引和多下标索引,冒号索引在不同情况下表示的含义亦不尽相同。
两者的区别和联系
逻辑索引要求索引矩阵必须和矩阵a的维数相同,而数组索引则没有这样的要求。但是数组索引中的单下标索引,又具有一些和逻辑索引的相同之处,通过下边的例子来说明:
>> a = [1:3;4:6;7:9]a = 1 2 3 4 5 6 7 8 9>> threshold = a>5threshold = 0 0 0 0 0 1 1 1 1>> a(threshold)ans = 7 8 6 9>> b = [1:3;4:6;7:9]b = 1 2 3 4 5 6 7 8 9>> b(4)ans = 2>> b([5 7])ans = 5 3
从上边的例子可以看出,当对多维矩阵进行单下标索引时,会首先将矩阵b进行列向量化,然后再按顺序选出其对应的元素。而逻辑索引也是默认进行列向量化后再按顺序选出其对应的元素。
find函数本质是数组索引
通过逻辑索引和数组索引的区别和联系,我们将很容易得出find函数本质是数组索引的结论,具体通过下边的例子进行说明:
>> a = [1:3;4:6;7:9]a = 1 2 3 4 5 6 7 8 9>> threshold = a>5threshold = 0 0 0 0 0 1 1 1 1>> a(threshold)ans = 7 8 6 9>> a(threshold) = 0a = 1 2 3 4 5 0 0 0 0>> b = [1:3;4:6;7:9]b = 1 2 3 4 5 6 7 8 9>> index = find(b>5)index = 3 6 8 9>> b(index) = 0b = 1 2 3 4 5 0 0 0 0
从上边的例子可以明显地看出,矩阵threshold是和矩阵a维数相同的逻辑矩阵,而矩阵index只是记录了矩阵b列向量化后大于5的元素的索引,且和矩阵b的维数并不相同。
参考文献
- matlab数组索引和逻辑索引 ↩
- matlab随手记 ↩
- 张志涌, 杨祖樱. MATLAB教程(R2006a-R2007a)[M]. 北京:北京航空航天大学出版社, 2006. 8 ↩
- matlab随手记 ↩
- MATLAB中的逻辑索引与数组索引
- MATLAB数组索引
- MATLAB学习笔记之-----数组、矩阵、向量索引和逻辑索引
- MATLAB中的矩阵索引
- MATLAB中矩阵的逻辑索引方法
- 数组绘制中的索引
- 索引数组与删除数组
- MATLAB中元胞数组的单元索引和内容索引
- Matlab-元胞数组的索引
- Matlab-结构体数组的索引
- Numpy中的数组花式索引
- Go数组中的索引问题
- myisam与innodb索引组织逻辑结构
- MySQL数据库索引中的单列索引与多列索引
- MySQL数据库索引中的单列索引与多列索引
- numpy数组切片与索引
- 索引数组
- 文件系统中的索引与目录
- Clob Class 介绍
- IDEA14从svn上导入项目
- metasploit 渗透测试(2)-基础
- 从Google Play 【谷歌商店】直接下载软件到电脑
- oracle 函数 trunc
- MATLAB中的逻辑索引与数组索引
- Android开发相关的视频网站和论坛以及个人博客收集
- 蓝桥杯—动态数组使用,删除数组零元素, 最小乘积(基本型) ,Torry的困惑(基本型)
- Windows下Redis的安装使用
- iOS系统font 大全
- C++读写dbf文件头,向第12-13字节里添加两个校验字符
- 扩大UIButton响应区域[按钮内有图片]
- Ubuntu14.02(64位系统)+caffe环境配置
- Android学习第五天————Spinner下拉列表组件