向量元素的引用有两种:
(1)提取向量中的单个元素
(2)提取向量中的多个元素
可以利用向量中包含的元素个数来描述一个向量的大小。
在MATLAB中,使用length函数或numel函数来计算向量中包含的元素个数。
向量的元素 | a1 | a2 | a3 | ...... | an |
索引(下标) | 1 | 2 | 3 | n |
在MATLAB中,向量的索引是从1开始的【最大索引就是元素的个数】
(1)单个元素引用
a(ind)【小括号中的ind就是提取的对应元素的索引】注意:创建向量用中括号,提取元素用小括号
a=[1 2 3 4 5 6 7 8 9 10]; a(1) ans=1 |
a(8) ans=8 |
a(11) %索引超出数组元素的数目(10) 索引超过数组元素的数量。索引不能超过10. |
a([]) %如果是提取空向量的话,结果也为空。 |
另外,ind取成0、负数或者小数。a(0)、a(-1)、a(1.5),MATLAB也会报错:“数组索引必须为正整数或逻辑值”。
(2)多个元素引用
利用向量的索引来同时提取多个位置的元素,只需要将ind设置为一个向量,ind中放入想要提取的元素的索引,然后使用a(ind)命令即可。
a=[1 2 3 4 5 6 7 8 9 10]; ind=[1 3 5 7 9]; a(ind) ans=1×5 1 3 5 7 9 %也可以简写成:a([1 3 5 7 9]) ans=1×5 1 3 5 7 9 |
注意到:1:2:9=[1 3 5 7 9] a(1:2:9) %提取a中奇数位置的元素 ans=1×5 1 3 5 7 9 |
a(2:2:10) %提取a中偶数位置的元素 或者 ind=2:2:10; a(ind) ans=1×5 2 4 6 8 10 |
%对于同一个位置的元素,可以提取多次 a=[1 2 3 4 5 6 7 8 9 10]; ind=[1 2 2 3 3 3]; a(ind) %熟悉的话可以直接写成a([1 2 2 3 3 3]) ans=1×6 1 2 2 3 3 3 |
a(5 6) 无效表达式,请检查缺失的乘法运算符、缺失或不对称的分隔符或者其他语法错误,要构建矩阵,请使用方括号而不是圆括号。 正确表达式:a([5 6]) |
技巧:使用end索引
适用于不知道向量a中有多少个元素,也不想使用length函数或者numel函数来计算向量中元素的个数,这个时候可以用一个特殊的关键词:end【end用来替代向量的最后一个索引】
a([5 6 7 8 9 10]) ans=1×6 5 6 7 8 9 10 %访问a中第五个至最后一个元素,那么可以直接使用 a(5:end) ans=1×6 5 6 7 8 9 10 |
%还可以对end进行计算,例如要访问a中第五个至倒数第三个元素 a(5:end-2) ans=1×4 5 6 7 8 |
%易错点:如果使用了end,就不能先将要取元素的索引赋值给ind,然后再调用a(ind). %ind=5::end %a(ind) %提取a中奇数位置的元素 a(1:2:end) ans=1×5 1 3 5 7 9 |