0

我有一个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,但聚合函数必须返回标量值。我真的很感激这里的一些帮助。

谢谢

4

2 回答 2

1

在一行中:-)

data(cell2mat(arrayfun(@(x,y) x:y, beginIndex,endIndex,'UniformOutput',false)))
于 2013-09-05T21:29:02.570 回答
1

Like so:

>> partitionedData = data(cell2mat(arrayfun(@(s,e) s:e, beginIndex, endIndex, ...
    'uni', 0)))
partitionedData =
     1     2     3     5     6     9    10
于 2013-09-05T21:22:27.413 回答