matlab:任意多个子区间快速索引

需求

想要提取一个数组里的几个"不同部位"(被不像要的元素隔开)的元素组!删去不像要的元素太麻烦,如何仍用"索引的方法"一次提取想要的多个"间隔分布"的子数组/区间?

matlab实现

语法:a( [1:2 4:7 9:11] )
说明:索引()里面带一个[]大区间,一个大区间里可以放多个小区间,即实现多个小区间的同时索引!
需求示例:有一个[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]怎么办?

程序实现:

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

用途拓展:循环时可以只对"想要改变的子区间"操作!

补充

对比2个语法:

  • a(2:4)
  • a([2:4])

两个的效果是完全一样的!也就是说,只选一个连续子区间时,直接用a(n:m)即可,不需要a([n:m])这样多一个中括号。但是:

  • a(2:4, 5:8); \quad % 报错
  • a([2:4, 5:8]); \quad % 正常√

所以:当只选1个连续子区间时,用一个小括号即可;当一次选多个子区间时,只能用本文提到的方法([])。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容