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