row
- это символ вектора, а не число.Например, если вы введете «4», переменная содержит символ 4, который имеет числовое значение 52 (код ASCII).Использование этого для индексации создаст строку # 52 и заполнит ее нулями.Чтобы создать эту строку, необходимо также создать промежуточные строки, значения которых по умолчанию равны 0.
Чтобы решить эту проблему, удалите 's'
из вызова к input
.Это приведет к тому, что возвращаемое значение будет интерпретироваться как выражение MATLAB, а не напрямую возвращать введенный текст в виде вектора символов.
Однако, если есть вероятность, что ваша программа используется злонамеренным пользователем илиглупый пользователь, это решение опасно (как указано @ Luis Mendo в комментарии ), потому что оно оценивает все типы пользователей, что означает, что пользователь может, например, ввести команду, которая стирает ваш жесткий диск.
Более безопасное решение - использовать str2double
для преобразования вывода массива char из input
в число, которое вы можете использовать для индексации.