确定向量元素的 运行 长度

Determining run-lengths of the elements of a vector

我正在尝试计算向量中每个数字在向量中连续出现的次数。

例如给定

vector = [8 8 8 7 6 6 5 5 5 5 5 5 5 5 5 5 4 4 3 5 3 2 2];

我想要一个输出,它会告诉我二维矩阵,其中第一行包含向量的值,第二行包含该值的 运行 长度:

8   7   6   5   4   3   5   3   2
3   1   2   10  2   1   1   1   2

实际矩阵更大。是否有一个特定的函数可以 returns 这样的值,或者我是否有任何其他方法可以解决这个挑战?

试试这个:

ind = [find(diff(vector)) numel(vector)];
result = [vector(ind); ind(1) diff(ind)];