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 eye,help magic等。要查看详细文档,可以在Matlab命令行中输入doc命令,如doc eye,doc 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

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

被折叠的 条评论
为什么被折叠?



