如何从矢量中提取数据作为一系列块?我无法想到一种简洁,有效的方法来做到这一点。
例如,如果我有一个包含块大小的向量:
funcs.flatMap(_.lift(num))
第二个载体a=
4
20
5
14
9
包含一组连续的数据
b
作为循环的一部分,所需的输出将是在第一次迭代中填充b=
1
1
0
1
1
0
1
1
1
1
0
1
1
1
1
0
and so on.
c
(如b(1:4)
),但是在第二次迭代中它将采用{ {1}}(作为a(1) = 4
)。这继续,接下来的5个点。 b(5:24)
的长度始终等于a(2) = 20
的总和。
答案 0 :(得分:3)
使用cumsum(a)构建停止点索引。然后起点是除了cumsum + 1的最后几点之外的所有点。
idx = cumsum(a)';
s_idx = [1; idx(1:end-1) + 1];
然后索引为
for x = 1:length(idx)
w(...) = b(s_idx(x):idx(x));
end
答案 1 :(得分:2)
您还可以使用mat2cell
将数组块化为单元格数组的元素:
>> c = mat2cell(b,a)
c =
[ 4x1 double]
[20x1 double]
[ 5x1 double]
[14x1 double]
[ 9x1 double]