Большая часть кода в вопросе не имеет никаких полезных эффектов.Эти три строки ведут к result
:
str = fileread('test2figure.txt');
coding = 'abcdefghijklmnñopqrstuvwxyz .,;';
[~, result] = ismember(str, coding);
ismember
возвращает во втором выходном аргументе индексы в coding
для каждого элемента str
.Таким образом, result
- это индексы, которые мы можем использовать для индексации в coding
:
out = coding(result);
Однако это не работает, поскольку некоторые элементы str
не встречаются в coding
, а дляэти элементы ismember
возвращают 0, что не является допустимым индексом.Мы можем заменить нули новым символом:
coding = ['*',coding];
out = coding(result+1);
По сути, мы сдвигаем каждый код на единицу, добавляя новый код для 1.
Один из символов, который мы находимсяздесь отсутствует символ перевода строки.Таким образом, три линии стали одной линией.Вы можете добавить код для символа новой строки, добавив его в таблицу coding
:
str = fileread('test2figure.txt');
coding = ['abcdefghijklmnñopqrstuvwxyz .,;',char(10)]; % char(10) is the newline character
[~, result] = ismember(str, coding);
coding = ['*',coding];
out = coding(result+1);
Всего этого проще достичь, просто используя таблицу кодов ASCII:
str = fileread('test2figure.txt');
result = double(str);
out = char(result);