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”表示最后一列或列,“en d-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 列对应的元素 >>A=magic(3) A = 8 1 6 3 5 7 4 9 2 >>A(2:3,3:-1:1) ans = 7 5 3 2 9 4 >>A(:,end) ans = 6 7 2 >>A(1,end-1) ans = 1 >>A([2 1 3 3],[1 1 2 2 1]) ans = 3 3 5 5 3 8 8 1 1 8 4 4 9 9 4 4 4 9 9 4 2.索引法引用(说白了索引就是存储顺序) A(index): index 可以是任意的数组,index 的元素必须是正整数,且不大于numel(A), 返回的是一个尺寸与index 一样的数组 下标和索引之间可以通过ind2sub 和 sub2ind 函数相互转换,具体可以看帮助,很简单 [I,J] = ind2sub(siz,IND) IND = sub2ind(siz,I,J) 还有使用A(:)就可以将数组A 转换为列向量 A(8):表示引用A 的第8 个元素 B=A([1 10 5 2 2 1 3]):表示依次引用A 的第1,10,5,2,2,1,3 个元素,返回与index 尺寸相同的数组,也就是说size(B)=size(index) A([2 5 9;1 1 1;8 5 6]):返回的时侯是一个3*3 的矩阵 >>A=magic(...