matlab数组拆分奇偶,在MATLAB中拆分数组

这是一个使用函数

DIFF和

FIND的简单矢量化解决方案:

>> array = [0 0 0 1 2 4 5 6 6 0 0 0 0 0 22 4 5 6 6 0 0 0 4 4 0]; %# Sample array

>> edgeArray = diff([0; (array(:) ~= 0); 0]);

>> indices = [find(edgeArray > 0)-1 find(edgeArray < 0)]

indices =

3 10

14 20

22 25

上面的代码首先创建一个列数组,其中一个列表示非零元素,用零填充此数组(如果任何非零跨度延伸到数组边缘),并采用元素差异.这给出了一个向量edgeArray,其中1表示非零跨度的开始,-1表示非零跨度的结束.然后函数FIND用于获取开始和结束的索引.

一面注意/挑剔:这些不是你所说的非零跨度开始和结束的指标.从技术上讲,它们是在开始之前和非零跨度结束之后的指数.您可能实际上想要以下内容:

>> indices = [find(edgeArray > 0) find(edgeArray < 0)-1]

indices =

4 9

15 19

23 24

你可能感兴趣的:(matlab数组拆分奇偶)