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

94 vues (au cours des 30 derniers jours)
David Mehr
David Mehr le 10 Avr 2013
Modifié(e) : Jay le 26 Sep 2025
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?

Réponse acceptée

Matt Kindig
Matt Kindig le 10 Avr 2013
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = [3,6,12,1,1,3]
letters = Alphabet(numbers)
Or using the ASCII codes:
letters = char(numbers + 64);
  6 commentaires
Image Analyst
Image Analyst le 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
Walter Roberson le 25 Sep 2025
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>

Connectez-vous pour commenter.

Plus de réponses (2)

Image Analyst
Image Analyst le 10 Avr 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 commentaires
Image Analyst
Image Analyst le 10 Avr 2013
For lower case you can either do lower(asciiChars), or do this:
asciiChars = char(asciiValues+'a'-1)
David Mehr
David Mehr le 10 Avr 2013
thank you

Connectez-vous pour commenter.


Jay
Jay le 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 commentaires
Walter Roberson
Walter Roberson le 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
Jay le 26 Sep 2025
Modifié(e) : Jay le 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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by