Assign Numeric Values to List of Strings

6 views (last 30 days)
Calum
Calum on 7 Apr 2015
Commented: per isakson on 7 Apr 2015
Hi,
If I have a cell array vertically sorted alphabetically as follows:
X=['a';'a';'c';'h';'x';'x']
What code should I use to obtain the numeric output:
Y=[1;1;2;3;4;4]
Where each integer in Y represents the alphabetic rank of the corresponding string in X.
Many thanks,
Cal
  1 Comment
per isakson
per isakson on 7 Apr 2015
Character array:
X=['a';'a';'c';'h';'x';'x'];
Cell array:
X={'a';'a';'c';'h';'x';'x'}

Sign in to comment.

Answers (2)

Matt J
Matt J on 7 Apr 2015
[~,~,Y]=unique(X);

Thorsten
Thorsten on 7 Apr 2015
That's easy
Y = [ 1 1 + cumsum(diff(X - 'a' + 1) > 0)'];
(and one of the reasons why I love Matlab :-))

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!