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