MATLAB beginner,经常会遇到这样的疑问,Matlab矩阵元素引用真灵活,我都看花了眼了!还有数组、矩阵、向量、行列式有什么区别呢?
既然有需求,就有市场,那下面我们详细分析下,期望对初学者的有些启示作用。
在http://www.matlabsky.com/thread-356-1-1.html中我们已经分析了数组、矩阵、方正、行列式、向量的区别
Matlab中数组元素引用有三种方法:
1.下标法(subscripts)
2.索引法(index)
3.布尔法(Boolean)
在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组
A=
8 1 6
3 5 7
4 9 2
Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页
对应个元素的索引和下标分别为
Element Index Subscripts
8 1 (1,1)
3 2 (2,1)
4 3 (3,1)
1 4 (1,2)
5 5 (2,2)
9 6 (3,2)
6 7 (1,3)
7 8 (2,3)
2 9 (3,3)
从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为没有个元素分配了一个唯一识别的ID(即index)
1.下标法引用
A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end”
大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如
A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素
A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列
A(1,end-1)表示引用第1行倒数第2个元素
A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素
XXXXXXu=magic(3)
XXXXXXu =
8 1 6
3 5 7
4 9 2
XXXXXXu([2 1 3],[2 2 1])
ans =
5 5 3
1 1 8
9 9 4