Обмен цифрами на буквы в MATLAB - PullRequest
2 голосов
/ 14 апреля 2009

У меня есть вектор, например, V = [ 1, 2, 3, 4 ]. Есть ли способ изменить это на буквы, [ a,b,c,d ]?

Ответы [ 4 ]

11 голосов
/ 15 апреля 2009

Использование «a» вместо кодов ascii может быть немного более читабельным

charString = char(V-1+'a');

Прописные буквы затем получаются с

charString = char(V-1+'A');
4 голосов
/ 15 апреля 2009

Есть два простых способа сделать это. Одним из способов является простой индекс.

C = 'abcdefghijklmnopqrstuvwxyz';
V = [8 5 12 12 15 23 15 18 12 4];

C(V)
ans =
helloworld

Конечно, char тоже это сделает. Ответ с символом лучше, потому что он не требует хранения списка букв для индексации.

char('a' + V - 1)
ans =
helloworld

Это лучше, потому что когда вы добавляете 'a' к чему-либо, он на лету преобразует 'a' в свое представление ascii. + 'a' даст 97, форму ascii для 'a'.

Приятно то, что он также работает для «А», поэтому, если вы хотите использовать заглавные буквы, просто добавьте «А» вместо этого.

char('A' + V - 1)
ans =
HELLOWORLD

Подробнее о работе со строками в MATLAB вы можете узнать из этих команд:

help strings
doc strings
1 голос
/ 14 апреля 2009

Используя функцию CHAR , которая превращает число (то есть код ASCII) в символ:

charString = char(V+96);

РЕДАКТИРОВАТЬ: Чтобы вернуться назад (отображение «a» на 1, «b» на 2 и т. Д.), Используйте функцию DOUBLE , чтобы вернуть символ обратно в его ASCII кодовый номер:

V = double(charString)-96;
1 голос
/ 14 апреля 2009

Что-то вроде

C = char(V+ones(size(V)).*(97-1))

должно работать (97 - это код ASCII для «a», и вы хотите, чтобы 1 отображался в «a», как это выглядит).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...