✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页: 小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:MATLAB 索引和修改数组
1.对数组进行索引
我们可以使用行、列索引从数组中提取值,如:
x = [1 2 3;4 5 6;7 8 9]
y = x(2,2)
这样y
会得到x
第2
行第2
列的值,即数值5
,可以注意到 MATLAB 中的索引是从1
开始的。我们可以使用 MATLAB 关键字
end
作为行或列索引来引用最后一个元素:
x = [1 2 3;4 5 6;7 8 9]
y = x(2,end)
z = x(end,1)
这里y
会得到x
第2
行最后一列的值,即数值6
;z
会得到x
最后一行第1
列的值,即数值7
。
end
关键字在这里数值上就等于当前维度的长度,可以参与算数运算:
x = [1 2 3;4 5 6;7 8 9]
y = x(end-1,end-2)
这里y
会得到x
倒数第2
行倒数第3
列的值,即数值4
。如果我们在索引时只提供一个值,那它会被认为是行索引,列索引则默认是
1
:
x = [1 2 3;4 5 6;7 8 9]
y = x(2)
这里y
会得到x
的第2
行第1
列的值,即数值4
。
2.提取多个元素
用作索引时,冒号运算符
:
可指代该维度中的所有元素,如:
x = [1 2 3;4 5 6;7 8 9]
y = x(2,:)
这里y
会得到x
的第2
行所有列的元素,即行向量[4 5 6]
。冒号运算符还可以引用某个值范围,如:
x = [1 2 3;4 5 6;7 8 9]
y = x(1:3,2)
这里y
会得到x
的第1
到3
行第2
列的元素,即列向量[2;5;8]
。对于行向量或者列向量,我们可以只提供一个索引值,来索引它对应的元素:
x = [1 2 3 4 5]
y = x(3)
z = x(2:end)
这里y
会得到x
的第3
个元素,即数值3
;z
会得到x
的第2
到 最后一个元素,即行向量[2 3 4 5]
。索引也可以是非连续的数字,我们可以用一个向量来存储离散的索引值:
x = [1 2 3;4 5 6;7 8 9]
y = x([1 3],:)
这里y
会得到x
的第1
和3
行所有列的元素,即矩阵[1 2 3;7 8 9]
。
3.更改数组中的值
上面两节我们已经学会了如何对指定位置进行索引,其实我们不止可以将索引出来的值赋值给变量,我们也可以对索引的位置进行修改:
x = [1 2 3;4 5 6;7 8 9]
x(3,:) = 0
这样x
第3
行的所有列都会被赋值为0
,即x
变为[1 2 3;4 5 6;0 0 0]
。也可以这样:
x = [1 2 3;4 5 6;7 8 9]
x(3,:) = x(1,:)
这样x
第3
行的值会被赋值为与第1
列相同,即x
变为[1 2 3;4 5 6;1 2 3]
。