exponenta event banner

genvarname

Создать допустимое имя переменной из строки

Совместимость

Примечание

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.

Примеры

Пример 1

Создайте четыре схожих имени переменных, которые не конфликтуют друг с другом:

v = genvarname({'A', 'A', 'A', 'A'})
v = 
    'A'    'A1'    'A2'    'A3'

Пример 2

Чтение заголовка столбца 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);']);

Пример 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
         .
         .
         .

Пример 4

Создание имен переменных, уникальных в рабочей области 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

Пример 5

При попытке создать имя переменной из ключевого слова MATLAB genvarname создает имя переменной, заглавное ключевое слово и предшествующее букве x:

v = genvarname('global')
v =
   xGlobal

Пример 6

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

Представлен до R2006a