Функция, которую вы ищете: matlab.lang.makeValidName
(введена в R2014a):
N = matlab.lang.makeValidName(S)
создает допустимые идентификаторы MATLAB®, N
, из входных строк, S
. Функция makeValidName
не гарантирует, что строки в N
являются уникальными.
Действительный идентификатор MATLAB - это символьный вектор буквенно-цифровых символов (A – Z, a – z, 0–9) и подчеркивания, так что первый символ является буквой, а длина символьного вектора меньше или равна namelengthmax.
makeValidName
удаляет все пробельные символы перед заменой любых символов, которые не являются буквенно-цифровыми или подчеркиваниями. Если после пробела следует строчная буква, makeValidName
преобразует букву в соответствующий заглавный символ.
Так, например:
>> matlab.lang.makeValidName(["_privateField", "some name"])
выходы:
ans =
1×2 string array
"x_privateField" "someName"
Я не уверен, что это применимо к вашему варианту использования, но вы можете посмотреть: Почему переменные не должны именоваться динамически (eval
) .
Возможно, то, что вы действительно хотите сделать , это проверить, существуют ли переменные с определенными именами, а затем сделать что-то соответственно - в этом случае вы можете использовать функцию exist
:
tf = exist('varName','var')
Так, например:
if exist('a','var') && exist('b','var')
res = someFunction(a,b);
else
res = someFunction(default_a,default_b);
end