1.向量索引
维数为1xN的数组称为行向量。行向量中元素的存取是使用一维索引进行的。因此, v(1)是向量v的第一个元素,v(2)是第二个元素,依次类推。MATLAB中向量的元素使用方括号括起,并由空格或逗号隔开。
使用转置运算符( .’)可将行向量转换为列向量,例如,
代码示例:
v = [1 3 5 7 9]
w = v.'
运行结果:
要存取元素的数据块,我们可使用MATLAB的冒号。
已知一个一维数组v = [1 3 5 7 9],现分别进行如下存取元素的操作:
v(1:3)%要存取v的前三个元素
ans =
1 3 5
v(2:4)%存取第二个到第四个元素
ans =
3 5 7
v(3:end)%存取第三个到最后一个元素
ans =
5 7 9
v(:)%产生一个列向量
ans =
1
3
5
7
9
v(1:2:end)%索引从1开始计数,步长为2,直到最后一个元素时停止
ans =
1 5 9
v(end:-2:1)%索引从最后一个元素开始计数,步长为-2,直到第一个元素时停止
ans =
9 5 1
2.矩阵索引
在MATLAB中,矩阵可以很方便地用-列被方括号括起并用分号隔开的行向量表示。
二维矩阵:
A = [1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
从矩阵中选取元素和从向量中选取元素是一样的,但我们现在需要两个索引:一个用于确定行位置,另一个用于确定相应的列位置。
A(2,3)%提取第2行第3列的元素
ans =
6
C3 = A(:,3)%提取出矩阵的第三列,冒号本身的作用相当于语句A (1:3,3)
C3 =
3
6
9
R2 = A(2,:)%提取出矩阵的第二行
T2 = A(1:2,1:3)%提取出矩阵的前两行
T2 =
1 2 3
4 5 6
使用end的运算与向量索引类似
A(end,end) %ans = 9
A(end,end-2) %ans = 7
A(2:end,end:-2:1) %ans = 6 4;9 7
E = A([1 3],[2 3])
E =
2 3
8 9
符号A([a b], [c d])从A中挑选出坐标为(行a,列c),(行a,列d),(行b,列c)和(行b,列d)的元素。因此,当我们令E=A([1 3],[23])时,我们正在选择A中的如下元素:行1列2中的元素,行第列3中的元素,行3列2中的元素,以及行3列3中的元素。
使用索引矩阵的一种特别有用的寻址方法
A = [1 2 3;4 5 6;7 8 9]
D= logical ( [ 1 0 0; 0 0 1;0 0 0])
A(D)
ans =
1
6
在为矩阵做索引时,单个引号会选择该数组的全部元素(以逐列的方式),并将这些元素排列成一个列向量的形式。例如,
A = [1 2 3;4 5 6;7 8 9]
T2 = A(1:2,1:3)
v = T2(:)
v =
1
4
2
5
3
6
冒号的使用是很有帮助的,如我们想要求一个矩阵的所有元素之和时,可以使用语句;
s = sum(A(:))
s =
45
本书中经常会用到 operation (A,dim) 的操作,operation表示MATLAB中的一种可用操作,A是一个数组,dim是一个标量。例如,假设A是一个大小为M X N的数组。命令
k = size (A,1) ;
沿A的第一个维数(在MATLAB中定义为垂直方向)给出A的大小。