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