Создать допустимое имя переменной из строки
Примечание
genvarname будет удален в следующем выпуске. Использовать matlab.lang.makeValidName и matlab.lang.makeUniqueStrings вместо этого.
varname = genvarname(str)
varname = genvarname(str, exclusions)
varname = genvarname(str) создает строковый или символьный вектор varname аналогично или аналогично str и может использоваться в качестве допустимого имени переменной. str может быть строкой, строковым массивом, символьным массивом, клеточным массивом символьных векторов. Если str - строковый массив или массив ячеек символьных векторов, genvarname возвращает строковый массив или массив ячеек символьных векторов в varname. Элементы, возвращенные genvarname гарантированно отличаются друг от друга.
varname = genvarname(str, exclusions) возвращает допустимое имя переменной, отличное от любого имени, указанного в exclusions вход. exclusions ввод может быть строкой, строковым массивом, символьным массивом, клеточным массивом символьных векторов. Укажите функцию who в exclusions для создания имени переменной, которое будет уникальным в текущей рабочей области MATLAB ® (см. пример 4 ниже).
Примечание
genvarname не создает переменную в рабочей области MATLAB. Поэтому нельзя присвоить значение выходу genvarname.
Создайте четыре схожих имени переменных, которые не конфликтуют друг с другом:
v = genvarname({'A', 'A', 'A', 'A'})
v =
'A' 'A1' 'A2' 'A3'Чтение заголовка столбца hdr из листа trial2 в электронной таблице Excel ® myproj_apr23:
[data hdr] = xlsread('myproj_apr23.xls', 'trial2');Создайте имя переменной из текста заголовка столбца, которое не будет конфликтовать с другими именами:
v = genvarname(['Column ' hdr{1,3}]);Назначьте данные, взятые из электронной таблицы, переменной в рабочей области MATLAB:
eval([v '= data(1:7, 3);']);
Собирайте показания с прибора раз в минуту в течение часа в различные поля структуры. Моделирование показаний прибора с использованием случайного числа. genvarname не только создает уникальные имена полей, но и создает структуру и поля в рабочем пространстве MATLAB.
for k = 1:60 record.(genvarname(['reading' datestr(clock, 'HHMMSS')])) = rand(1); pause(60) end
После завершения программы просмотрите записанные данные из рабочей области:
record
record =
reading092610: 0.6541
reading092710: 0.6892
reading092811: 0.7482
reading092911: 0.4505
reading093011: 0.0838
.
.
.Создание имен переменных, уникальных в рабочей области MATLAB, путем вывода выходных данных из who функции в exclusions список.
for k = 1:5
t = clock;
pause(uint8(rand * 10));
v = genvarname('time_elapsed', who);
eval([v ' = etime(clock,t)'])
endПо мере выполнения этого кода можно видеть, что переменные, созданные genvarname уникальны в рабочей области:
time_elapsed =
5.0070
time_elapsed1 =
2.0030
time_elapsed2 =
7.0010
time_elapsed3 =
8.0010
time_elapsed4 =
3.0040После завершения программы используйте who для просмотра переменных рабочей области:
who k time_elapsed time_elapsed2 time_elapsed4 t time_elapsed1 time_elapsed3 v
При попытке создать имя переменной из ключевого слова MATLAB genvarname создает имя переменной, заглавное ключевое слово и предшествующее букве x:
v = genvarname('global')
v =
xGlobalПри вводе вектора символов, длина которого превышает значение, возвращаемое namelengthmax функция, genvarname усечение результирующего символьного вектора имени переменной:
namelengthmax
ans =
63
vstr = genvarname(sprintf('%s%s', ...
'This name truncates because it contains ', ...
'more than the maximum number of characters'))
vstr =
ThisNameTruncatesBecauseItContainsMoreThanTheMaximumNumberOfChaДопустимое имя переменной MATLAB - это символьный вектор из букв, цифр и подчеркивания, так что первый символ является буквой, а длина вектора меньше или равна значению, возвращаемому namelengthmax функция. Любой вектор символов, превышающий namelengthmax усечен в varname выход. См. пример 6 ниже.
Имя переменной, возвращенное genvarname не гарантированно будет отличаться от других имен переменных в настоящее время в рабочей области MATLAB, если вы не используете exclusions ввод способом, показанным в примере 4, ниже.
Если вы используете genvarname для создания имени поля для структуры MATLAB создает переменную для структуры и поля в рабочей области MATLAB. См. пример 3 ниже.
Если str ввод содержит любые пробелы, genvarname затем удаляет и заглавно переводит следующий алфавитный символ в str. Если str содержит любые неальфанумерические символы, genvarname преобразует эти символы в шестнадцатеричное значение.