前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Matlab的数组索引

Matlab的数组索引

作者头像
用户9925864
发布于 2022-07-27 01:21:32
发布于 2022-07-27 01:21:32
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

在 MATLAB中,根据元素在数组中的位置(索引)访问数组元素的方法主要有三种:按位置索引、线性索引和逻辑索引。

按元素位置进行索引

最常见的方法是显式指定元素的索引。例如,要访问矩阵中的某个元素,请依序指定该元素的行号和列号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
A = 4×4

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16


e = A(3,2)
e = 10

e 是 A 中位于 3,2 位置(第三行第二列)的元素。

还可以在一个向量中指定多个元素的索引,从而一次引用多个元素。例如,访问 A 的第二行中的第一个和第三个元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r = A(2,[1 3])
r = 1×2

     5     7

要访问某个行范围或列范围内的元素,请使用 colon。例如,访问 A 中第一到三行、第二到四列中的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r = A(1:3,2:4)
r = 3×3

     2     3     4
     6     7     8
    10    11    12

计算 r 的另一种方法是使用关键字 end 指定第二直至最后一列。通过此方法,可以直接指定最后一列,而不必知道 A 中到底有多少列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r = A(1:3,2:end)
r = 3×3

     2     3     4
     6     7     8
    10    11    12

如果要访问所有行或所有列,只使用冒号运算符即可。例如,返回 A 的整个第三列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r = A(:,3)
r = 4×1

     3
     7
    11
    15

通常,可以使用索引来访问 MATLAB 中任何数组的元素,而不管其数据类型或维度如何。例如,直接访问 datetime 数组的列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
t = [datetime(2018,1:5,1); datetime(2019,1:5,1)]
t = 2x5 datetime
   01-Jan-2018   01-Feb-2018   01-Mar-2018   01-Apr-2018   01-May-2018
   01-Jan-2019   01-Feb-2019   01-Mar-2019   01-Apr-2019   01-May-2019


march1 = t(:,3)
march1 = 2x1 datetime
   01-Mar-2018
   01-Mar-2019

对于更高维度的数组,可以扩展语法以匹配数组维度。假设有一个随机的 3×3×3 数值数组。访问位于该数组第一页中第二行第三列的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = rand(3,3,3);
e = A(2,3,1)
e = 0.5469

使用单个索引进行索引

访问数组元素的另一种方法是只使用单个索引,而不管数组的大小或维度如何。此方法称为线性索引。虽然 MATLAB 根据定义的大小和形状显示数组,但实际上数组在内存中都存储为单列元素。我们可以使用矩阵来直观地理解这一概念。下面的数组虽然显示为 3×3 矩阵,但 MATLAB 将它存储为单列,由 A 的各列顺次连接而成。存储的向量包含由元素 12、45、33、36、29、25、91、48、11 组成的序列,可以用单个冒号全部显示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = [12 36 91; 45 29 48; 33 25 11]
A = 3×3

    12    36    91
    45    29    48
    33    25    11


Alinear = A(:)
Alinear = 9×1

    12
    45
    33
    36
    29
    25
    91
    48
    11

例如,A 的第 3,2 个元素是 25,您可以使用语法 A(3,2) 访问它。您也可以使用语法 A(6) 访问此元素,因为 25 是存储的向量序列中的第六个元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
e = A(3,2)
e = 25

elinear = A(6)
elinear = 25

线性索引在视觉上可能不太直观,但在执行某些不依赖于数组大小或形状的计算时很有用。例如,可以轻松地对 A 的所有元素求和,而无需指定 sum 函数的第二个参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s = sum(A(:))
s = 330

sub2ind 和 ind2sub 函数可用于在数组的原始索引和线性索引之间进行转换。例如,计算 A 的第 3,2 个元素的线性索引。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linearidx = sub2ind(size(A),3,2)
linearidx = 6

从线性索引转换回行和列形式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[row,col] = ind2sub(size(A),6)
row = 3

col = 2

使用逻辑值进行索引

使用 true 和 false 逻辑指示符也可以对数组进行索引,在处理条件语句时尤其便利。例如,假设想知道矩阵 A 中的元素是否小于另一个矩阵 B 中的对应元素。当 A 中的元素小于 B 中的对应元素时,小于号运算符返回元素为 1 的逻辑数组。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = [1 2 6; 4 3 6]
A = 2×3

     1     2     6
     4     3     6


B = [0 3 7; 3 7 5]
B = 2×3

     0     3     7
     3     7     5


ind = A<B
ind = 2x3 logical array

   0   1   1
   0   1   0

现在已经知道满足条件的元素的位置,可以使用 ind 作为索引数组来检查各个值。MATLAB 将 ind 中值 1 的位置与 A 和 B 中的对应元素进行匹配,并在列向量中列出它们的值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Avals = A(ind)
Avals = 3×1

     2
     3
     6


Bvals = B(ind)
Bvals = 3×1

     3
     7
     7

MATLAB 中的 is 函数还返回逻辑数组,指示输入中的哪些元素满足特定条件。例如,使用 ismissing 函数检查 string 向量中的哪些元素是缺失值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
str = ["A" "B" missing "D" "E" missing];
ind = ismissing(str)
ind = 1x6 logical array

   0   0   1   0   0   1

假设要查找非缺失值元素的值。将 ~ 运算符和索引向量 ind 结合使用即可实现此目的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
strvals = str(~ind)
strvals = 1x4 string
    "A"    "B"    "D"    "E"
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind
本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一些负面消息对国内各个高校和业界影响很大。但是我们作为技术人员,更是要奋发努力,拼搏上进,学好技术,才能师夷长技以制夷,为中华之崛起而读书!
演化计算与人工智能
2020/08/14
1K0
一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind
矩阵的基本知识构造重复矩阵的方法——repmat(xxx,xxx,xxx)构造器的构造方法单位数组的构造方法指定公差的等差数列指定项数的等差数列指定项数的lg等差数列sub2ind()从矩阵索引==》
要开始学Matlab了,不然就完不成任务了 java中有一句话叫作:万物皆对象 在matlab我想到一句话:万物皆矩阵 矩阵就是Java中的数组 不过矩阵要求四四方方,Java中的数组长和宽可以不同长度 一个有意思的矩阵——结构器 听到这个名词,我想到了构造函数#34 结构器有点像对象 具有不同的field属性(成员变量) 一个属性就相当于一个矩阵容器,所以为什么说万物皆矩阵呢,哈哈 不同于普通矩阵,结构器可以携带不同类型的数据(String、基本数据等等) 多维构造器
用户1174983
2018/02/05
1.5K0
矩阵的基本知识构造重复矩阵的方法——repmat(xxx,xxx,xxx)构造器的构造方法单位数组的构造方法指定公差的等差数列指定项数的等差数列指定项数的lg等差数列sub2ind()从矩阵索引==》
MATLAB 索引和修改数组
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:MATLAB 索引和修改数组 ---- MATLAB 索引和修改数组 1.对数组进行索引 2.提取多个元素 3.更改数组中的值 ---- 1.对数组进行索引 我们可以使用行、列索引从数组中提取值,如: x = [1 2 3;4 5 6;7 8 9] y = x(2,2) 这样 y 会得到 x 第 2 行第
小嗷犬
2022/11/15
9780
通过案例讲解MATLAB中的数据类型
在matlab中,数据的基本单位是数组(array),数组就是组织成行和列的数据值的组合,单个的数据值是通过数组名和圆括号中的下标来进行访问的,下标用来确定某个值的行和列。在matlab中,标量也被看成数组来处理,即一行一列的数组。其中数组又可以分为向量(vector)和矩阵(matrix),向量是指只有一维的数组,矩阵是指二维及二维以上的数组。
mindtechnist
2024/08/08
2670
通过案例讲解MATLAB中的数据类型
Matlab系列之数组(矩阵)的生成
从本篇开始,会有一段时间都将用于记录数组、矩阵的操作等等,如果以前没有接触过相关的,可能会觉得要展示的是很复杂的东西,但并不是,这是一个很简单的部分,但也是一个很重要的部分,至少现在的我觉得这部分的内容可以说是MATLAB精髓之一吧,毕竟该系统的运算是基于矩阵进行的,在MATLAB系列最开始的篇章中就已经有说过一些,当然,你们也可以保持自己的意见,毕竟这只是我觉得,你们觉得该咋样还是咋样,但是不管怎么说,接下来的篇章中关于矩阵的这部分内容很重要就对了
狂人V
2020/08/07
1.2K0
matlab 单元数组和元胞数组
本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一些负面消息对国内各个高校和业界影响很大。但是我们作为技术人员,更是要奋发努力,拼搏上进,学好技术,才能师夷长技以制夷,为中华之崛起而读书!
演化计算与人工智能
2020/08/14
1.8K0
朝花夕拾之Matlab矩阵表示
MATLAB的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。
glm233
2020/09/28
6930
朝花夕拾之Matlab矩阵表示
numpy线性代数基础 - Python和MATLAB矩阵处理的不同
http://blog.csdn.net/pipisorry/article/details/39087583
用户7886150
2021/01/03
1.6K0
matlab
对于一些nc数据或者遥感影像处理时,虽然一些第三方软件可以出图,但我们往往需要借助python或者matlab软件进行数据处理,但最后保存下来数据如何导入arcgis进行分析呢?
用户6841540
2024/08/05
2250
一起来学演化计算-matlab基本函数min
min(A)也会产生这个结果,因为'omitnan'是默认选项 使用“includes enan”标志返回NaN
演化计算与人工智能
2020/08/14
6030
原 初学数模-MATLAB Quick S
    其实,这个矩阵被叫做Magic Square,是因为他的每行每列、主对角线和副对角线数字之和全部相等,且都是(1+16)*2=34。     (话说微博网红、艺术科普作家、广告狗顾爷还曾花了很大篇幅在《小顾聊绘画》里介绍丢勒大师,有兴趣的童鞋可以去翻翻,个人感觉挺好看的)     那我们就把它输入到MATLAB里吧~ A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]     Hint:试一试第一章介绍的其他的输入方式!     现在,你已经能在
不高不富不帅的陈政_
2018/05/18
1.6K0
机器学习:MATLAB语法
MATLAB中定义函数需要新建一个 ‘xxx.m’ 的文件,然后将函数的定义写在文件中,该文件要放在MATLAB打开的文件夹下,某函数定义如下,返回平方数。
Here_SDUT
2022/09/19
1.6K0
机器学习:MATLAB语法
matlab新手入门_入门画画初学者
MATLAB 是“matrix laboratory”的缩写形式。MATLAB® 主要用于处理整个的矩阵和数组,而其他编程语言大多逐个处理数值。矩阵是指通常用来进行线性代数运算的二维数组。
全栈程序员站长
2022/09/30
1.1K0
matlab新手入门_入门画画初学者
Matlab入门到放弃(二)、matlab基础知识
——————————————————————————————————修正:打算更四~五篇,之后更simulink相关操作
根究FPGA
2020/06/29
1K0
列文伯格算法_最短路径matlab程序
  本篇文章到这里就结束了,欢迎大家继续阅读本系列文章的后续文章,本文介绍的内容的完整代码的MATLAB文件我会放到附件里,听说在上传的时候设为粉丝可下载是不需要花费积分的,大家看一下需不需要积分,若还是需要积分,在评论区留言,我直接传给你
全栈程序员站长
2022/11/08
8680
列文伯格算法_最短路径matlab程序
Matlab入门(一)
功能区:提供三个选项卡(主页,绘图,应用程序),各自有不同的工具可供使用;快速访问工具栏:包含一些常用按钮;当前文件夹工具栏:用于实现当前文件夹的操作。一定要先建立文件再将其设为工作文件夹。
十二惊惶
2024/02/28
2180
Matlab入门(一)
MATLAB矩阵及其运算(一)
matlab矩阵的创建方式有如下几种:直接输入、读取外部数据、内置函数、M文件编程
巴山学长
2019/07/15
7320
MATLAB矩阵及其运算(一)
Matlab-使用逻辑值进行索引
使用 true 和 false 逻辑指示符可以对数组进行索引,在处理条件语句时尤其便利。例如,假设您想知道矩阵 A 中的元素是否小于另一个矩阵 B 中的对应元素。当 A 中的元素小于 B 中的对应元素时,小于号运算符返回元素为 1 的逻辑数组。
用户9925864
2022/07/27
8660
Matlab - sort函数
在Matlab中排序某个向量(一维)时,可以使用sort(A),其中A为待排序的向量,如果仅是用来排序A,那么直接使用sort(A)即可,如果排序后还需要保留原来的索引可以用返回值,即[B,ind]=sort(A),计算后,B是A排序后的向量,A保持不变,ind是B中每一项对应于A中项的索引。排序是安升序进行的。   在Matlab中,访问矩阵中的元素,一维用A(1)访问向量A的第一个元素;(下标从1开始);二维用A(1,2)访问A中第一行,第二列的元素。   由于在sort函数的结果中,是安升序排序的,要转换成降序,先用X=eye(n)生成一个n维的单位阵,然后用X=rot90(X)将其旋转为次对角线的单位阵,再用原来矩阵乘以X即可,如要讲A逆序排列采用如下步骤: X=eye(size(A)); X=rot90(X); A=A*X;  复制代码 假如a是一个2*n的矩阵,即两行. b=a(1,:); [c,pos]=sort(b); %pos为排序后的下标,c为第一行的排序结果 a(2,:)=a(2,pos); %第二行按照第一行排序的下标对应 a(1,:)=c;           %第一行结果重新赋给a的第一行  复制代码 以下适用于m*n的矩阵按第一行排序 [ b, pos ] = sort( a( 1, : ) ); a = a( :, pos ); X=magic(5) X = 17 24 1 8 15  23 5 7 14 16  4 6 13 20 22  10 12 19 21 3  11 18 25 2 9 >> [a,b]=sort(X,2) a = 1 8 15 17 24  5 7 14 16 23  4 6 13 20 22  3 10 12 19 21  2 9 11 18 25 b = 3 4 5 1 2  2 3 4 5 1  1 2 3 4 5  5 1 2 3 4  4 5 1 2 3 结果解释:  a是原来的矩阵x按照行,每行从小到大重新排列得到的新矩阵。  b告诉你重排的详细信息,也就是做了什么样的变动。  例如b的第一行显示3 4 5 1 2,那么将原矩阵X的第一行的第3 4 5 12个元素取出来,顺次排列,就变成a矩阵的第一行。 sort(X,2) 和sort(X,1)分别意思如下 x = 3 7 5 0 4 2 sort(x,2) ans = 3 5 7 0 2 4 按行重新排列原来的矩阵,从小到大 sort(x,1) ans = 0 4 2 3 7 5 按列重新排列原来的矩阵,从小到大
AIHGF
2019/02/18
9920
matlab sort函数
一起来学演化计算-matlab sort函数 sort 对数组元素排序 语法 B = sort(A) 按照大小不等于1的第一个数组维度对A的元素按升序排序 如果A是一个向量,那么sort(A)对向量元素进行排序 如果A是一个矩阵,那么sort(A)将A的列作为向量,并对每一列进行排序 如果A是一个多维数组,那么sort(A)沿着大小不等于1的第一个数组维度操作,将元素视为向量。 B = sort(A,dim) 返回沿维度dim的已排序元素。例如,如果A是一个矩阵,那么sort(A,2)对每一行中的元素进行
演化计算与人工智能
2020/08/14
1K0
推荐阅读
相关推荐
一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验