Delete iterations in a string of numbers

1 view (last 30 days)
Ho are you everyone !
I have this string :
S=[222223444451111122666677775555533332222], if I want to delete the iterations in this string to get the string :
ss=[2 3 4 5 1 2 6 7 5 3 2], what is the proper function for this purpose? Thank you a lot for any answer
  1 Comment
Jan
Jan on 19 Mar 2016
To be exact: Do you mean:
S = '222223444451111122666677775555533332222'
and
ss = '23451267532'
Which types have S and ss?

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 19 Mar 2016
Edited: Stephen23 on 19 Mar 2016
Remove repetitions, return a string:
>> str = '222223444451111122666677775555533332222';
>> new = str([true,diff(+str)~=0])
new =
23451267532
It is easy to convert the string into a numeric vector of the digits:
>> vec = new-'0'
vec =
2 3 4 5 1 2 6 7 5 3 2
  1 Comment
Jan
Jan on 19 Mar 2016
diff(+str)~=0 is as well really nice as confusing. +1

Sign in to comment.

More Answers (1)

Jan
Jan on 19 Mar 2016
Edited: Jan on 19 Mar 2016
Or:
S = '222223444451111122666677775555533332222'
T = S(S ~= [S(2:end), 0])
Or if you really want the vector:
U = T - '0'
For a huge data set Fex:RunLength might be faster:
T = RunLength(S);

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!