convert an array of numbers into letters; 1 =a, 2 =b, 3 = c etc.
94 views (last 30 days)
Show older comments
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?
0 Comments
Accepted Answer
Matt Kindig
on 10 Apr 2013
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = [3,6,12,1,1,3]
letters = Alphabet(numbers)
Or using the ASCII codes:
letters = char(numbers + 64);
6 Comments
Image Analyst
on 30 Jan 2021
@Ivan Mich, give a specific example of what you're starting with (data plus the look up table), and your desired/expected output.
Walter Roberson
on 25 Sep 2025
Alphabet = 'ABCDEF'
numbers = [3,6,12,1,1,3];
map(Alphabet) = numbers;
map('DEADBEAF')
More Answers (2)
Image Analyst
on 10 Apr 2013
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
Image Analyst
on 10 Apr 2013
For lower case you can either do lower(asciiChars), or do this:
asciiChars = char(asciiValues+'a'-1)
Jay
on 25 Sep 2025
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
Walter Roberson
on 25 Sep 2025
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.
Jay
on 26 Sep 2025
Edited: Jay
on 26 Sep 2025
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
See Also
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!