在Matlab中将矢量数据块存储到数组中

时间:2016-05-04 22:54:03

标签: arrays matlab sorting for-loop vector

我在Matlab中有一个数组

 A = [1 2 3 4 5 6 7 8 9;
     67 67 67 86 86 86 86 67 67]';

其中A的第一行中的每个点对应于“{1}}或67的”代码“。我试图提取86"67s"的这些块,这样每次一个块开始时,相应的元素被放入一个名为X的不同数组的第三维中,其中。

因此,例如在A我有3个不同的块,所以我想最终得到一个大小为1x9x3的数组X.对于例如第一个"86s"块我想要X

67

我知道我会使用for循环“填充”此向量X

 X(1,:,1) = [1 2 3];

但这当然不正确或完整,因为首先我不确定如何分离“块”以及如何正确地“填写”X(1,i,j)中的j。其次,如何让代码识别出有多少块?

有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:0)

一种可能的方法,基于this回答:

>> B = accumarray([0; cumsum(diff(A(:,2)) ~= 0)] + 1, A(:,1), [], @(x) {x}, [])

现在你有了这个:

>> B{1}

ans =

     1
     2
     3

>> B{2}

ans =

     4
     5
     6
     7

>> B{3}

ans =

     8
     9