我有一个包含数据的1xN
数组,我想从中删除相关部分。
基本上我有两个数组 - beginIndex
和endIndex
- 表示我需要提取哪些数据部分。
示例:
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,但聚合函数必须返回标量值。 我真的很感激这里的一些帮助。
谢谢
答案 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)))