special sorting

1 Ansicht (letzte 30 Tage)
Hamed Amini
Hamed Amini am 15 Aug. 2011
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 Kommentare
Paulo Silva
Paulo Silva am 15 Aug. 2011
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 am 15 Aug. 2011
Sorry, I think I was not clear enough. What I was looking for was what Jan did below.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 15 Aug. 2011
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 Kommentare
Hamed Amini
Hamed Amini am 15 Aug. 2011
Thanks for the clever solution and the hint about the variable names.
Paulo Silva
Paulo Silva am 15 Aug. 2011
Now I see what was the objective, +1 vote

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by