矩阵A
引用
一、用下标
A(a,b)第a行第b列的元素
如果a或b超出了A的行和列范围 那么矩阵会自动扩充,未赋值的元素设为0
clear all;
A=[1 2 3;4 5 6;7 8 9]
A(4,4)=10
image.png
二、用序号
序号就是元素在内存中保存的位置
A(a)按列存储,先存第1列,取第a的元素
两者转换(都可以拓展至多维)
函数sub2ind
linearInd = sub2ind(matrixSize, rowSub, colSub)把指定行列的元素转化为存储的序号
rowSub 和colSub接受矩阵时,即两个矩阵中对应的元素组合得到行列坐标
一般情况下matrixSize用size函数获取,size函数以向量形式返回矩阵的大小
A=[1 1 1;1 1 1;71 18 91]
sub2ind(size(A),[1 2],[2 2])
sub2ind(size(A),[1; 2],[2 ;2])
image.png
结果的形式和rowSub和colSub给出的形式有关
函数ind2sub
[I,J] = ind2sub(siz,IND)
IND为元素的序号,可以是向量形式,size同上
理解为sub2ind反转形式
返回值I为行 J为列
注意: For matrices, [I,J] = ind2sub(size(A),find(A>5)) returns the same values as [I,J] = find(A>5)
clear all;
A=[1 1 1;1 1 1;71 18 91]
[I,J]=ind2sub(size(A),[1,2,3])
image.png
第1 2 3号元素分别位于第一列的1 2 3行
删除
利用空矩阵,把元素置为空,空矩阵是没有元素的矩阵
clear all;
A=[1 2 3;4 5 6;71 18 91;12 15 16]
A(1:2,:)=[]%删除第1~2行全部元素
image.png
改变矩阵形状
reshape (A,m,n)
在矩阵总元素保持不变的前提下,把A重新排成 m*n的矩阵,不改变序号
clear all;
A=[1 2 3;4 5 6;71 18 91;12 15 16]%4*3变换为3*4
reshape(A,3,4)
变完后序号不变