Matlab在向量中查找连续值并写入另一个矩阵

szqfcxe2  于 2023-05-07  发布在  Matlab
关注(0)|答案(1)|浏览(293)

我有一个有很多连续值的向量,我想把这些值写进一个矩阵(稍后做一些逐行的事情),但我不太明白怎么做。例如:

x = [1,2,4,5,7,8,9,11,12,13,14,15]

需要成为

y = [1,2;4,5;7,8,9;11,12,13,14,15]

我看过一些类似的帖子,只是检查值是否连续,但我不知道如何从这些帖子中写出我想要的矩阵。
编辑:这实际上是不可能的,因为矩阵需要相同的维度,(就像我不能随机地让一些行比其他行长),但我仍然不知道如何将向量划分为连续数字的较小部分。

r7xajy2e

r7xajy2e1#

您可以使用accumarrayanonymous function应用于输入组,生成cell array,条件是每组内的连续增量为1。请注意,这样做是对because组标签进行排序的。另请参阅diffcumsum以了解代码的作用。

x = [1,2,4,5,7,8,9,11,12,13,14,15];
ind = cumsum([true; diff(x(:))~=1]); % generate group labels
y = accumarray(ind, x(:), [], @(x){x.'}) % collect values based on group labels

在示例中,代码给出

>> celldisp(y)
y{1} =
     1     2
y{2} =
     4     5
y{3} =
     7     8     9
y{4} =
    11    12    13    14    15

相关问题