MATLAB:使用开始和结束索引在多个部分中的分区向量

时间:2013-09-05 20:43:56

标签: matlab data-partitioning

我有一个包含数据的1xN数组,我想从中删除相关部分。 基本上我有两个数组 - beginIndexendIndex - 表示我需要提取哪些数据部分。

示例:

data = 1:10;
beginIndex = [1 5 9];
endIndex = [3 6 10];

期望的结果是

partitionedData = [1 2 3 5 6 9 10] %Indices: 1-3, 5-6, 9-10 

我已经尝试了

partitionedData = data(beginIndex:endIndex)

后者给了我相当于

partitionedData = data(beginIndex(1):endIndex(1)) %[1 2 3]

我也试过accumarray,但聚合函数必须返回标量值。 我真的很感激这里的一些帮助。

谢谢

2 个答案:

答案 0 :(得分:1)

像这样:

>> partitionedData = data(cell2mat(arrayfun(@(s,e) s:e, beginIndex, endIndex, ...
    'uni', 0)))
partitionedData =
     1     2     3     5     6     9    10

答案 1 :(得分:1)

在一行中: - )

data(cell2mat(arrayfun(@(x,y) x:y, beginIndex,endIndex,'UniformOutput',false)))