Создайте допустимое имя переменной из строки
Примечание
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
вход. The 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
преобразует эти символы в шестнадцатеричное значение.