我有一个向量,我想从中提取所有块:
x = [1 1 1 4 4 5 5 4 6 1 2 4 4 4 9 8 4 4 4 4]
这样我将得到载体或包含块的单元格:
[1 1 1], [4 4], [5 5], [4], [6], [1], [2], [4 4 4], [9], [8], [4 4 4 4]
有没有一种有效的方法可以在不使用for循环的情况下完成它?谢谢!
答案 0 :(得分:0)
对于循环aint你可能认为的速度很慢,尤其是在最近的Matlab版本中,尤其是在我们的情况下。也许这会有所帮助
x = [1 1 1 4 4 5 5 4 6 1 2 4 4 4 9 8 4 4 4 4];
breakIdx = [0, find(diff(x)), length(x)];
groups = mat2cell(x,1,diff(breakIdx));
我们通过应用diff(x)
找到这些群组,然后我们获得了find()
的群组索引。然后,只需将组移动到结果单元格groups
中即可。
此处的边缘案例检查非常少,所以我建议您添加它。