MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)

矩阵元素的引用

  1. 通过下标来引用矩阵的元素。
    A(3,2)表示A矩阵第三行第二列的元素。只会改变A(3,2)元素的值,并不会改变其他的值。
    如果给出的行下标或者列下标大于原来矩阵的行下标或者列下标,那么自动扩展原来的矩阵,并将扩展后没有赋值的矩阵元素置为0,示例如下所示:
    在这里插入图片描述
  2. 通过下标来引用矩阵的元素。
    在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列,……,一直到矩阵的最后一列元素。
    矩阵元素的序号就是矩阵元素在内存中的排列顺序。
    例如下图中,创建了A的两行三列的元素,引用第三个元素:
    在这里插入图片描述
    序号与下边是一一对应的,以m*n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。
    矩阵袁术的序号与下标可以利用sub2ind和ind2sub函数实现互相转换。

sub2ind函数

将矩阵中的指定袁术的行、列下标转换成存储的序号:调用格式为:
在这里插入图片描述
sub2ind函数举例:
在这里插入图片描述
上图中,首先创建了一个矩阵A,一个5行5列矩阵,size(A)为获得A矩阵的行数和列数,sub2ind第二和第三个参数都是用矩阵表示的,两个矩阵对应的元素代表A中某个元素的行下标和列下标。
行下标为1,列下标为4的元素对应的是0.1419,对应的序号为16。
行下标为2,列下标为5的元素对应的是0.0357,对应的序号为22。
行下标为3,列下标为1的元素对应的是0.1270,对应的序号为3。
即我们输入的坐标(1,4),(2,5),(3,1)在矩阵A中的索引号,意思是A矩阵第1行第4个元素的索引值号为16,为什么是16呢?因为MATLAB是按列搜索的,先搜索第一列,然后搜索第二列…。同理A中的第2行第5个的索引号为22,后面依次类推。
那如何取出A中(1,4),(2,5),(3,1),输入一下代码即可:
在这里插入图片描述

ind2sub函数

将把矩阵元素的序号转换成对应的下表,其调用格式为:
在这里插入图片描述
ind2sub和sub2ind这对函数,是互逆的一对函数。ind2sub把数组或者矩阵的线性索引转化为相应的下标;sub2ind则正好相反,将下标转化为线性索引。
ind2sub函数举例:
在这里插入图片描述

上图中,首先创建了一个矩阵A,一个5行5列矩阵,size(A)为获得A矩阵的行数和列数,ind2sub第二个参数是用矩阵表示的,矩阵对应的元素代表A中索引值。
索引值为1,元素对应的是0.2760,对应的坐标为(1,1)。
索引值为7,元素对应的是0.9597,对应的坐标为(2,2)。
索引值为18,元素对应的是0.1986,对应的坐标为(3,4)。
那如何取出A中(1,1),(2,2),(3,4),输入一下代码即可:
在这里插入图片描述

利用冒号表达式获得子矩阵

子矩阵是指矩阵中的一部分元素构成的矩阵。

A(i,:) 第i行的全部元素
A(:,j) 第j列的全部元素
A(i:i+m,k:k+m) 第i-i+m行且在第k-k+m列的所有元素
A(i:i+mm,:) 第i-i+m行的全部元素

在这里插入图片描述

end 运算符

表示某一维的末尾元素小标。
在这里插入图片描述

利用空矩阵删除矩阵的元素

空矩阵是指没有任何元素的矩阵。
在这里插入图片描述
x就是一个空矩阵。
在这里插入图片描述

reshape函数

如果需要改变矩阵的形状,reshape(A,m,n)表示矩阵总元素保持不变的前提下,将矩阵A重新排列为m*n的矩阵。
reshape只改变矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。
在这里插入图片描述

A( : )

将矩阵A的每一列元素堆叠起来,成为一个列向量。
在这里插入图片描述
A( : )等价于reshape(A,6,1)。

扫描二维码关注公众号,回复: 11614545 查看本文章

最后

关注微信公众号『记贴』,持续更新文章和学习资料,可加作者的微信交流学习!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_24312945/article/details/107031237
今日推荐