convert an array of numbers into letters; 1 =a, 2 =b, 3 = c etc.

So i have created a function that returns a row vector of numbers, Example:
[3, 6, 12, 1, 1, 3].
I want to write a new function that turns these numbers into letters. And in a form that i can call call it for any size set of results using a rule such as
1 = A, 2 = B, 3 = C, 4 = D, etc.
I see there is a num2str function but i dont really understand how to implement this as a function that will perform the conversion on each element in the vector.
What would be the best way to do this?

 Accepted Answer

Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = [3,6,12,1,1,3]
letters = Alphabet(numbers)
Or using the ASCII codes:
letters = char(numbers + 64);

6 Comments

Thank you Matt for your swift response,
this is great (Y)
one quick question: is it possible to denote a character in your alphabet by more than one symbol?
E.G A a2 B b2 C c2 -
thank you :)
Alphabet = {'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'}
numbers = [3,6,12,1,1,3]
letters = Alphabet{1}(numbers)
letters = Alphabet{2}(numbers)
Substitutions = {'Alpha', 'Bob', 'Charlie', 'Delta'};
mapped = Substitutions(numbers);
strjoin(mapped, {' '}) %if you want them blank separated in one string
If someone wants to do the opposite? That is, based on the letters to find the numbers that were set (I mean if I have the word HELLO, which numbers correspont to the above letters?)
@Ivan Mich, give a specific example of what you're starting with (data plus the look up table), and your desired/expected output.
Alphabet = 'ABCDEF'
Alphabet = 'ABCDEF'
numbers = [3,6,12,1,1,3];
map(Alphabet) = numbers;
map('DEADBEAF')
ans = 1×8
1 1 3 1 6 1 3 3
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Sign in to comment.

More Answers (2)

Try this:
asciiValues = [3, 6, 12, 1, 1, 3]
asciiChars = char(asciiValues+'A'-1)
In the command window:
asciiValues =
3 6 12 1 1 3
asciiChars =
CFLAAC

2 Comments

For lower case you can either do lower(asciiChars), or do this:
asciiChars = char(asciiValues+'a'-1)

Sign in to comment.

You can create a simple MATLAB function to convert numbers to letters like this:
function letterStr = num2letterVec(numVec)
% Convert each number in the vector to a letter (1=A, 2=B, ..., 26=Z)
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
% Use modulo 26 to handle numbers > 26
letterStr = letters(mod(numVec-1, 26)+1);
end
This function works for any size vector, and numbers greater than 26 will wrap around automatically.
If you want to explore similar number-to-letter conversions online, you can check numberstoletters.com for inspiration and alternative mappings.

2 Comments

I would suggest a minor adjustment:
letterStr = letters(mod(numVec-1, length(letters))+1);
This avoids the "magic number", and makes it easier to adjust if letters changes.
make sense, thank you for updating the code..
function letterStr = num2letterVec(numVec)
%NUM2LETTERVEC Convert a numeric vector to letters (1=A, 2=B, ..., 26=Z)
% Handles numbers > 26 by wrapping around using modulo.
% Non-integer values are rounded to the nearest integer.
% Define the letters
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
% Round numbers to nearest integer
numVec = round(numVec);
% Convert numbers to letters using modulo
letterStr = letters(mod(numVec - 1, length(letters)) + 1);
end

Sign in to comment.

Categories

Asked:

on 10 Apr 2013

Edited:

Jay
on 26 Sep 2025

Community Treasure Hunt

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

Start Hunting!