MATLAB 索引和修改数组

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:MATLAB 索引和修改数组



对数组进行索引

我们可以使用行、列索引从数组中提取值,如:

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> y = x(2,2)
y =
     5

这样 y 会得到 x2 行第 2 列的值,即数值 5,可以注意到 MATLAB 中的索引是从 1 开始的。

我们可以使用 MATLAB 关键字 end 作为行或列索引来引用最后一个元素:

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> y = x(2,end)
y =
     6

>> z = x(end,1)
z =
     7

这里 y 会得到 x2 行最后一列的值,即数值 6z 会得到 x 最后一行第 1 列的值,即数值 7

end关键字在这里数值上就等于当前维度的长度,可以参与算数运算:

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> y = x(end-1,end-2)
y =
     4

这里 y 会得到 x 倒数第 2 行倒数第 3 列的值,即数值 4

如果我们在索引时只提供一个值,那它会被认为是行索引,列索引则默认是 1

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> y = x(2)
y =
     4

这里 y 会得到 x 的第 2 行第 1 列的值,即数值 4


提取多个元素

用作索引时,冒号运算符:可指代该维度中的所有元素,如:

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> y = x(2,:)
y =
     4     5     6

这里 y 会得到 x 的第 2 行所有列的元素,即行向量 [4 5 6]

冒号运算符还可以引用某个值范围,如:

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> y = x(1:3,2)
y =
     2
     5
     8

这里 y 会得到 x 的第 13 行第 2 列的元素,即列向量 [2;5;8]

对于行向量或者列向量,我们可以只提供一个索引值,来索引它对应的元素:

>> x = [1 2 3 4 5]
x =
     1     2     3     4     5

>> y = x(3)
y =
     3

>> z = x(2:end)
z =
     2     3     4     5

这里 y 会得到 x 的第 3个元素,即数值 3z会得到 x 的第 2 到 最后一个元素,即行向量 [2 3 4 5]

索引也可以是非连续的数字,我们可以用一个向量来存储离散的索引值:

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> y = x([1 3],:)
y =
     1     2     3
     7     8     9

这里 y 会得到 x 的第 13 行所有列的元素,即矩阵 [1 2 3;7 8 9]


更改数组中的值

上面两节我们已经学会了如何对指定位置进行索引,其实我们不止可以将索引出来的值赋值给变量,我们也可以对索引的位置进行修改:

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> x(3,:) = 0
x =
     1     2     3
     4     5     6
     0     0     0

这样 x3 行的所有列都会被赋值为 0,即 x 变为 [1 2 3;4 5 6;0 0 0]

也可以这样:

>> x = [1 2 3;4 5 6;7 8 9]
x =
     1     2     3
     4     5     6
     7     8     9

>> x(3,:) = x(1,:)
x =
     1     2     3
     4     5     6
     1     2     3

这样 x3 行的值会被赋值为与第 1 列相同,即 x 变为 [1 2 3;4 5 6;1 2 3]


重构和排序函数

函数说明
reshape(x,m,n)将矩阵 x 重构为 m×n 的矩阵
reshape(x,[m,n])将矩阵 x 重构为 m×n 的矩阵
reshape(x,[m,n,p,…])将矩阵 x 重构为 m×n×p×… 的矩阵
sort(x)对向量 x 进行升序排序
sortrows(x)对矩阵 x 的行进行升序排序
flip(x)对向量 x 进行翻转
flip(x,dim)对矩阵 x 在维度 dim 上进行翻转
flipud(x)将矩阵 x 从上向下翻转
fliplr(x)将矩阵 x 从左向右翻转
rot90(x)将矩阵 x 逆时针旋转 90 度
transpose(x)对矩阵 x 进行转置
ctranspose(x)对矩阵 x 进行共轭转置
permute(x,order)置换矩阵 x 的维度
ipermute(x,order)逆置换矩阵 x 的维度
shiftdim(x,k)将矩阵 x 的维度向后移动 k 个位置
circshift(x,k)将矩阵 x 的元素向后移动 k 个位置
squeeze(x)删除矩阵 x 中长度为 1 的维度

索引相关函数

函数说明
colon(a,b)创建一个从 a 到 b 的等差数列
end用于索引,表示最后一个元素
ind2sub(siz,ndx)将索引 ndx 转换为子索引
sub2ind(siz,i,j,…)将子索引转换为索引
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小嗷犬

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值