Convert an array of letters into numbers

58 views (last 30 days)
Ivan Mich
Ivan Mich on 30 Jan 2021
Commented: Walter Roberson on 31 Jan 2021
I would like to convert an array of letters into numbers. Based on this code:
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = [3,6,12,1,1,3]
letters = Alphabet(numbers)
I would like to make the reverse of this. I mean I want to find eg 'HELLO' to which numbers correspont based on the above code.

Answers (2)

Walter Roberson
Walter Roberson on 30 Jan 2021
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
[~, HelloNumbers] = ismember('HELLO', Alphabet)
HelloNumbers = 1×5
8 5 12 12 15
Map(Alphabet) = 1:length(Alphabet);
Map('HELLO')
ans = 1×5
8 5 12 12 15
  5 Comments
Stephen23
Stephen23 on 31 Jan 2021
"Is there a way to set A equal to Á and À? I mean in order to not take into account accents?"
Yes, two approaches were given to you in answers to your earlier question (which you then deleted):
Walter Roberson
Walter Roberson on 31 Jan 2021
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÈÌÒÙÁÉÍÓÚÄËÏÖŸ';
Map(Alphabet(1:26)) = 1:26;
Map(Alphabet(27:end)) = Map('AEIOUAEIOUAEIOY');
Map('HÈLLÖ')
ans = 1×5
8 5 12 12 15

Sign in to comment.


Ive J
Ive J on 30 Jan 2021
Edited: Ive J on 30 Jan 2021
One way would be Map object:
alph = 'A':'Z';
num = 1:numel(alph); % or whatever
M = containers.Map(string(alph'), num);
term = 'HELLO';
arrayfun(@(x) M(x), string(term')).'
ans =
8 5 12 12 15

Categories

Find more on Data Type Conversion 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!