需求
想要提取一個數組里的幾個"不同部位"(被不像要的元素隔開)的元素組!刪去不像要的元素太麻煩,如何仍用"索引的方法"一次提取想要的多個"間隔分布"的子數組/區(qū)間?
matlab實現(xiàn)
語法:a( [1:2 4:7 9:11] )
說明:索引()里面帶一個[]大區(qū)間,一個大區(qū)間里可以放多個小區(qū)間,即實現(xiàn)多個小區(qū)間的同時索引!
需求示例:有一個[2 0 1 4 1 0 0 3 0 4 1 2 1 8 3 8 0 3 1]數組,我想提其中的[2 0 1 4 1 2 1 8 0 3 1]怎么辦?
程序實現(xiàn):
x = [2 0 1 4 1 0 0 3 0 4 1 2 1 8 3 8 0 3 1];
n = length(x);
b = x([1:4 11:14 17:n])
% 結果:
b =
2 0 1 4 1 2 1 8 0 3 1
用途拓展:循環(huán)時可以只對"想要改變的子區(qū)間"操作!
補充
對比2個語法:
- a(2:4)
- a([2:4])
兩個的效果是完全一樣的!也就是說,只選一個連續(xù)子區(qū)間時,直接用a(n:m)即可,不需要a([n:m])這樣多一個中括號。但是:
- a(2:4, 5:8);
% 報錯
- a([2:4, 5:8]);
% 正?!?/li>
所以:當只選1個連續(xù)子區(qū)間時,用一個小括號即可;當一次選多個子區(qū)間時,只能用本文提到的方法([])。