005_index_in_Matlab中的数组索引

本文详细解释了Matlab中的数组索引机制,包括位置索引(通过括号指定元素位置)、逻辑索引(使用逻辑值或数组选择元素),以及如何通过sub2ind和ind2sub函数处理不同类型的索引。读者将了解索引的一致性和灵活性,以及它们在数组操作中的重要性。

Matlab中的数组索引

1. 数组相关函数

前面我们已经介绍了关于向量、数组的一些基本约定,已经涉及了一些数组创建和操作的规则。

函数 作用 备注
size 返回数组的大小
length 返回数组的最大维度
ndims 返回数组的维度数
numel 返回数组的元素个数
zeros 创建全零数组
ones 创建全一数组
rand 创建随机数组
randn 创建服从正态分布的随机数组
linspace 创建等差数列
logspace 创建等比数列

特别还有操作符:,用于生成等差数列,如1:2:10,产生行向量[1,3,5,7,9]

还有一些没有介绍的创建函数,也很常用。

函数 作用 备注
eye 创建单位矩阵
magic 创建魔方阵
true 创建逻辑1
false 创建逻辑0

还有几个函数,是提取部分元素或者组合元素形成新的数组。

函数 作用 备注
blkdiag 创建对角矩阵
diag 提取对角线元素
tril 提取下三角矩阵
triu 提取上三角矩阵
flip 翻转数组
fliplr 水平翻转数组
flipud 垂直翻转数组
cat 拼接数组
repmat 复制数组
horzcat 水平拼接数组
vertcat 垂直拼接数组
reshape 重塑数组
squeeze 去除维度为1的维度
repelem 重复数组元素

这里不对这些命令进行详细介绍,需要查看帮助的,请在Matlab命令行中输入help命令,如help eyehelp magic等。要查看详细文档,可以在Matlab命令行中输入doc命令,如doc eyedoc magic等。

这里对数组元素的访问,也称为数组索引,进行一个专门的介绍。

2. 为什么要用括号

很多程序员和初学者在使用Matlab时,会有一个疑问:为什么要用括号来索引数组元素,而不是用方括号?毕竟在C、Python等语言中,我们都是用方括号来索引数组元素的。所以在第一门课程里面都是按方括号来来学习的,这是第一印象。

我在仔细调研这个问题之前就形成了一个观点:那就是Matlab把数组(矩阵)假装成一个对象,这个对象自己是一个函数,索引就是这个函数的意义。

下面,请听我的狡辩。

在Matlab中,函数的调用是用括号的,如sin(x)size(A)plot(x,y)等等。这是Matlab的基本约定,括号是函数调用的标志。那么索引数组的元素呢?也是用括号,如A(1,2)A(1:3)A(1:2:end)等等。是不是很相似?

其次,等后面我会专门写一个函数的约定,里面会讲到,Matlab里面有一个数据构造叫做cell,跟别的语言的元组非常类似,实际上Matlab函数的输入参数和输出值都是cell

比如有个函数size,他可以返回数组的大小,或者返回数组的特定维的大小。

A = magi
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大福是小强

除非你钱多烧得慌……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值