从另一个向量中获取有序整数向量

get ordered integer vector from another vector

我有一个向量:

v1 = [13 13 13 13 5 5 5 2 2 5 5];

并想创建另一个向量 v2,这样如果 v1 中的元素与前一个元素相同,它会获得相同的有序(顺序)整数,例如:

v2 = [1 1 1 1 2 2 2 3 3 4 4];

形式化为(社区维基)答案,您可以这样做

cumsum([1, diff(v1)~=0]);

它使用 cumsum 对 true/false 数组进行 运行 求和,标识一个元素与前一个元素的不同之处,即值更改的位置为 1,否则为 0。