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 вход. The 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