special sorting

1 次查看(过去 30 天)
Hamed Amini
Hamed Amini 2011-8-15
special sorting! i have the input vector of flags for different segments of the vector (flags are distributed randomly). how can i sort it to get the output? basically it reads from the beginning of the vector and labels each segment of the vector consecutively. there is no repetitive flags in the input vector for different segments.
input = [2 2, 5, 6 6 6, 1 1 1 1, 4, 3 3]
output= [1 1, 2, 3 3 3, 4 4 4 4, 5, 6 6]
  2 个评论
Paulo Silva
Paulo Silva 2011-8-15
Sorry but I can't understand, you show the flags (input) and the output but no original vector to be sorted
Hamed Amini
Hamed Amini 2011-8-15
Sorry, I think I was not clear enough. What I was looking for was what Jan did below.

请先登录,再进行评论。

采纳的回答

Jan
Jan 2011-8-15
Do not use "input" as name of a variable, because it is a name of a built-in function.
in = [2, 2, 5, 6, 6, 6, 1, 1, 1, 1, 4, 3, 3];
out = cumsum([1, diff(a) ~= 0]);
>> out = [1 1, 2, 3, 3, 3, 4, 4, 4, 4, 5, 6, 6]
  2 个评论
Hamed Amini
Hamed Amini 2011-8-15
Thanks for the clever solution and the hint about the variable names.
Paulo Silva
Paulo Silva 2011-8-15
Now I see what was the objective, +1 vote

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by