以增量从矢量中提取数据 - MATLAB

时间:2015-06-08 19:19:53

标签: matlab

如何从矢量中提取数据作为一系列块?我无法想到一种简洁,有效的方法来做到这一点。

例如,如果我有一个包含块大小的向量:

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的总和。

2 个答案:

答案 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]