第六课 矩阵元素的引用
文章目录
一、 矩阵元素的引用方式
通过下标引用矩阵元素
矩阵的引用下标必须为正整数,且要用 ()
括起来
例如:A(3,2) 表示 A 矩阵第三行第二列的元素。
例子
>> A=[1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
>> A(3,2)
ans =
8
改变元素的值
>> A(3,2)=10
A =
1 2 3
4 5 6
7 10 9
// 扩展矩阵
>> A(4,5)=10
A =
1 2 3 0 0
4 5 6 0 0
7 10 9 0 0
0 0 0 0 10
通过矩阵序号引用
在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。
矩阵元素的序号就是矩阵元素在内存中的排列顺序。
序号与下标是一一对应的,以m×n矩阵A为例,矩阵元素A(i.j)的序号为(j-1) × (m+i) 。
例子
在上面代码的基础上,输入命令
>> A(1)
ans =
1
>> A(2)
ans =
4
>> A(5)
ans =
2
矩阵元素的序号与下标可以利用 sub2ind
和 ind2sub
函数实现相互转换。
sub2ind函数
将矩阵中指定元素的行、列下标转换成存储的序号。调用格式为 ‘D=sub2ind(S,I,J)’ 。
S:表示行数和列数,是由行数和列数组成的向量
I:转换矩阵元素的行下标
J:转换矩阵元素的列下标
D:对应下标元素的序号,它的行列数与 I、J 相同
如果 I 、J 是矩阵元素的话,表示要将矩阵元素的多个行列下表转换成存储的序号。
例子
>> A=[1:3;4:6]
A =
1 2 3
4 5 6
>> D=sub2ind(size(A), [1,2;2,2],[1,1;3,2])
D =
1 2
6 4
ind2sub 函数
把矩阵元素的序号转换成对应的下标,其调用格式为 [I,J]=ind2sub(S,D)
S:行数和列数组成的向量
D:序号
I:对应行数的行下标
J:对应行数的列下标
例子
>> [I,J]=ind2sub([3,3],[1,3,5])
I =
1 3 2
J =
1 1 2
利用冒号表达式获得子矩阵
子矩阵是指由矩阵中的一部分元素构成的矩阵。
A(i,:):第 i 行的全部元素
A(;,j):第 j 列的全部元素
A(i:i+m,k:k+m):第 i~i+m 行内且在第 k~k+m 列中的所有元素
A(i:i+m,:):第 i~i+m 行的全部元素
例子
>> A=[1:5;6:10;11:15]
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
>> A(1:2,:)
ans =
1 2 3 4 5
6 7 8 9 10
>> A(2:3,1:2:5)
ans =
6 8 10
11 13 15
end 运算符
表示某一维的末尾元素下标。
>> A=[1:5;6:10;11:15;16:20]
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
>> A(end,:)
ans =
16 17 18 19 20
>> A([1,4],3:end)
ans =
3 4 5
18 19 20
二、 删除矩阵元素
利用空矩阵删除矩阵的元素
例子
>> A=[]
A =
[]
>> A=[1:5;6:10;11:15;16:20]
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
>> A(:,[2,4])=[]
A =
1 3 5
6 8 10
11 13 15
16 18 20
改变矩阵的形状
reshape函数
reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排列成 m * n 的二维矩阵。
例子
>> A=[1:5;6:10;11:15;16:20]
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
>> B=reshape(A,5,4)
B =
1 7 13 19
6 12 18 5
11 17 4 10
16 3 9 15
2 8 14 20
特殊矩阵
A(: )
将矩阵A的每一列元素堆叠起来,成为一个列向量。
例子
>> A=[1:5;6:10;11:15;16:20]
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
>> A(:)
ans =
1
6
11
16
2
7
12
17
3
8
13
18
4
9
14
19
5
10
15
20
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
A(: )
ans =
1
6
11
16
2
7
12
17
3
8
13
18
4
9
14
19
5
10
15
20