Matlab的数组索引

article/2025/11/11 12:50:13

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

按元素位置进行索引

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

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    16e = A(3,2)e = 10

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

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

r = A(2,[1 3])r = 1×2
     5     7

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

r = A(1:3,2:4)r = 3×3
     2     3     4     6     7     8    10    11    12

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

r = A(1:3,2:end)r = 3×3
     2     3     4     6     7     8    10    11    12

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

r = A(:,3)r = 4×1
     3     7    11    15

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

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-2019march1 = t(:,3)march1 = 2x1 datetime   01-Mar-2018   01-Mar-2019

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

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 组成的序列,可以用单个冒号全部显示。

A = [12 36 91; 45 29 48; 33 25 11]A = 3×3
    12    36    91    45    29    48    33    25    11Alinear = A(:)Alinear = 9×1
    12    45    33    36    29    25    91    48    11

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

e = A(3,2)e = 25
elinear = A(6)elinear = 25

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

s = sum(A(:))s = 330

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

linearidx = sub2ind(size(A),3,2)linearidx = 6

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

[row,col] = ind2sub(size(A),6)row = 3
col = 2

使用逻辑值进行索引

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

A = [1 2 6; 4 3 6]A = 2×3
     1     2     6     4     3     6B = [0 3 7; 3 7 5]B = 2×3
     0     3     7     3     7     5ind = A<Bind = 2x3 logical array
   0   1   1   0   1   0

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

Avals = A(ind)Avals = 3×1
     2     3     6Bvals = B(ind)Bvals = 3×1
     3     7     7

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

str = ["A" "B" missing "D" "E" missing];ind = ismissing(str)ind = 1x6 logical array
   0   0   1   0   0   1

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

strvals = str(~ind)strvals = 1x4 string    "A"    "B"    "D"    "E"

 


http://chatgpt.dhexx.cn/article/LmlBwOj4.shtml

相关文章

Matlab笔记-数组

一、结构数组的基本使用 结构体的定义即为C语言中结构体的初始化&#xff0c;其引用成员&#xff08;在Matlab中为field,字段的意思&#xff09;和C语言相同。 1、直接赋值 >> student(1).nameSilen; student(1).id1234; student(1).grade[1 2 3;4 5 6;7 8 9]; stude…

matlab三维数组

三维数组的定义&#xff1a;在MATLAB中&#xff0c;习惯性的将二维数组的第一维称为“行”&#xff0c;第二维称为“列”&#xff0c;而于三维数组&#xff0c;其第三维习惯性地称为“页”。 定义一个三维数组&#xff1a; A&#xff08;2&#xff0c;2&#xff0c;2&#xf…

MATLAB基础——关于数组(一)

变量和数组 MATLAB程序的基本数据单元是数组&#xff0c;标量在MATLAB中也被当做数组来处理 数组可以定义为向量&#xff08;一般描述为一维数组&#xff09;或矩阵&#xff08;一般描述为二维或多维&#xff09; 访问数组中的元素&#xff1a;数组名&#xff08;&#xff09;…

Matlab 数组与矩阵

矩阵 1、v21:3:18 ;表示的是从1 开始 18 结束&#xff0c;间隔为3 的一个等差数列v2 1 4 7 10 13 162、linspace(1,10,9);,介于1-10 之间&#xff0c;取9个数&#xff0c;使得他们是一个等差数列 >> linspace(1,10,9)ans 1.0000 2.1250 3.250…

matlab常用的数组操作总结

总结一下需要的matlab数组操作&#xff0c;免得每次都要去官网上找 参考文献&#xff1a;多维数组 - MATLAB & Simulink - MathWorks 中国: https://ww2.mathworks.cn/help/matlab/math/multidimensional-arrays.html#f1-87418 文章目录 1创建并扩展多维普通数组1普通数组引…

MATLAB怎么创建矩阵和数组

参考 MATLAB怎么创建矩阵和数组 - 云社区 - 腾讯云 第一步&#xff1a;首先教给大家如何创建数组&#xff0c;MATLAB创建数组的方法比较简单&#xff0c;我们在MATLAB中输入如下代码&#xff1a;x[2 4 6 8 10] 即可创建数组&#xff0c;数据之间使用空格或者逗号隔开&#xff…

MATLAB 数组计算

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

MATLAB-数组

数组 数组分类按照数组元素个数与排列方式分类按照数组的存储方式分类 创建数组直接输入函数生成 数组操作获取数组中的元素矩阵元素的引用单个元素的引用多个元素的引用&#xff1a;冒号的特殊用法 各类型数组操作数组的算术操作数组的逻辑运算使用库函数数组连接数组切片数组…

MATLAB中的数组

一、什么是数组 数组是组织成行和列的数据值的组合。 数组可以分为向量和矩阵。 向量通常用来描述只有一维的数组&#xff1b;而矩阵用来描述二维或者多维的数组。 数组在内存中存储是按列存储的。 二、创建和初始化一维或二维数组 1、在赋值语句中初始化 % array1为一维数…

MATLAB学习笔记——数组

MATLAB的数组 数组 数组的创建 &#xff08;1&#xff09;直接输入法 1、建立数组最直接的方法是在命令窗口直接输入数组 2、数组元素间用空格&#xff0c;逗号或分号分隔。 3、空格和逗号分隔建立行向量&#xff0c;元素之间用分号分隔建立列向量。 调用格式&#xff1…

Matlab中的向量和数组(超详细)

Matlab中的向量和数组&#xff08;超详细&#xff09; 文章目录 Matlab中的向量和数组&#xff08;超详细&#xff09;Matlab中的向量介绍创建向量向量的大小索引向量数值索引逻辑索引 缩短向量向量运算算术运算逻辑运算sum()、min()、max()、round()、ceil()、floor()、fix()切…

Windows server :DHCP服务 地址保留DHCP域备份

实验环境&#xff1a;在虚拟机上 一台Windows server 2016 一台Windows 10 1.DHCP 地址保留 我们到server上的服务器管理界面 右上角工具》dhcp 进入dhcp 依次找到作用域 然后我们去看被Windows 10 保留分配的mac地址 可以看到物理地址为&#xff1a;00-0C-29-77-BF-7C 这时再…

计算机ip保留地址,分类ip地址中,保留地址有哪些?具体点说说,作业。

分类ip地址中,保留地址有哪些?具体点说说,作业。以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 分类ip地址中,保留地址有哪些?具体点说说,作业。 A类地址中的私有地址和保留地址: ①10.0.0.1到10.255.25…

保留的IP地址

主机ID全为0的地址&#xff1a;特指某个网段&#xff0c;比如192.168.10.0 255.255.255.0。指192.168.10.0网段。主机ID全为1的地址&#xff1a;特指该网段的全部主机&#xff0c;如果你的计算机发送数据包使用主机ID全是1的IP地址&#xff0c;用作广播&#xff0c;数据链路层…

DHCP 地址保留

1.查看需要保留地址主机的mac地址 2.编辑DHCP服务器的配置文件 vim /etc/dhcp/dhcpd.conf 3.重启DHCP服务器 service dhcpd restart 4.重启测试机的网卡 ifdown eth0;ifup eth0

IP地址分类详解:A、B、C、D类地址如何划分的以及保留地址(特殊地址)介绍

一、IP地址类型 2.1基本分类 最初设计互联网络时&#xff0c;为了便于寻址以及层次化构造网络&#xff0c;每个IP地址包括两个标识码&#xff08;ID&#xff09;&#xff0c;即网络ID&#xff08;net-id&#xff09;和主机ID&#xff08;host-id&#xff09;。 同一个物理网络…

计算机ip保留地址,ip地址显示为保留地址怎么解决

ip地址显示为保留地址怎么解决 2016-09-05 10:28 标签&#xff1a;dhcp,ip地址 ip是保留地址怎么解决&#xff1f;ip作为计算机网络相互连接进行通信的协议&#xff0c;当dhcp超出系统规定的时间后&#xff0c;便会自动分配一个保留地址作为ip&#xff0c;如果主机ip地址为…

ip保留地址

A类&#xff1a; 10.X.X.X是私有地址&#xff08;私有地址就是在互联网上不使用&#xff0c;而被用在局域网络中的地址&#xff09;。 127.X.X.X是保留地址&#xff0c;用做循环测试用的。 B类&#xff1a; 172.16.0.0---172.31.255.255是私有地址。 169.254.X.X是保留地址…

Unity URP管线的PBR材质及Tessallation Shader(Height Map高度贴图)

在使用URP管线的过程中发现默认的URP管线的shader是没有提供height map参数设置的&#xff0c;经过查找才知道URP管线中height map相关的功能需要自己写shader开启Tessallation&#xff08;曲面细分&#xff09;和Displacement&#xff08;移位贴图&#xff09;功能才能使用。 …

SubstanceDesigner制作PBR材质制作并且同步到Unity小尝试

SubstanceDesigner制作PBR材质制作并且同步到Unity小尝试 1.下载安装SubstanceDesigner,网址&#xff1a;https://zixue.3d66.com/softhtml/downsoft_1242.html 2.unity中unity018及以上版本需要Appstore中下载安装插件&#xff1a;Substance in Unity 3. substanceDesigner操…