提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Matlab提供了功能丰富快速的矩阵计算方法,也有功能丰富的矩阵元素选取方法,由于循环计算的易理解和直观,新手通常会使用多层循环来选取矩阵元素,但是使用矩阵规则来选取其实会更快速和高效下面由简到繁介绍一下各种选取方法。
1.简单切片
选取某行某列:
D(2,:);
D(1:2,:);
D(:,2);
D(:,1:2);
D(2:3,1:2);
2.根据条件选取
注意,当直接在变量后的括号内写入条件表达式时,返回的是符合条件的元素,这是根据逻辑表达式选取的,并被拉伸为一维向量。
D>10;
D(D>10);
3.根据下标选取对应元素
1)简介
当我们需要根据一个下标矩阵选取对应元素时,直接用对应行列返回的会是两个行向量的全部组合。
示例:
当我们需要选择D矩阵中(1,3),(2,2),(4,5)位置的元素时,如果直接使用对应行向量选取:
会选取到(1,3),(1,2),(1,5),(2,3),…,(4,5)的所有组合,这时我们可以使用单下标的方法来选取对应元素;
在Matlab中,对于多维矩阵,除了使用直观上的D(1D,2D,3D,…,ND)的方法选取对应位置上的元素,也可以使用D(id)的方法来选取元素,比如对于18,在D中为4行3列,也可以表示为第14个元素。
2)二维选取
Matlab中维度是从后往前数的,二维中可以理解为先数列再数行:
也就是先数1,6,11,16,21;
因此第a行,第b列可以计算为第(d-1)*col+a,col为矩阵行数,也可以用size(D,1)获得,因此根据id矩阵选取对应元素可以写为:
D((id(2,:)-1)*size(D,1)+id(1,:));
3)多维选取
同理,对于多维,从后往前数即可,这里只演示到三维;
这里需要选择矩阵中的(1,2,1),(2,1,3),(1,1,3)
当然,这里的id的计算也可以通过matlab函数sub2ind来替代。
总结
Matlab中,当遇到了对多维矩阵的元素选取因为使用多层循环嵌套极大增加运算时间可以试试将循环写为矩阵运算能够极大的提高运算速度。