Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

genvarname

문자열에서 유효한 변수 이름 생성하기

호환성

참고

genvarname은 향후 릴리스에서 제거될 예정입니다. matlab.lang.makeValidNamematlab.lang.makeUniqueStrings를 대신 사용하십시오.

구문

varname = genvarname(str)
varname = genvarname(str, exclusions)

설명

varname = genvarname(str)str 입력값과 유사하거나 동일하고 유효한 변수 이름으로 사용될 수 있는 string형 또는 문자형 벡터 varname을 생성합니다. str은 string형, string형 배열, 문자형 배열, 또는 문자형 행 벡터로 구성된 셀형 배열일 수 있습니다. str이 string형 배열 또는 문자형 벡터로 구성된 셀형 배열이면 genvarnamevarname에 string형 배열 또는 문자형 벡터로 구성된 셀형 배열을 반환합니다. genvarname이 반환한 요소는 서로 다르도록 보장됩니다.

varname = genvarname(str, exclusions)exclusions 입력값에 나열된 이름과 다른 유효한 변수 이름을 반환합니다. exclusions 입력 인수는 string형, string형 배열, 문자형 배열, 또는 문자형 벡터로 구성된 셀형 배열일 수 있습니다. exclusions에 함수 who를 지정하여 현재 MATLAB® 작업 공간에서 고유한 변수 이름을 생성합니다. 아래 예제 4 항목을 참조하십시오.

참고

genvarname은 MATLAB 작업 공간에 변수를 생성하지 않습니다. 따라서 genvarname의 출력값에 값을 대입할 수 없습니다.

예제

예제 1

서로 충돌하지 않는 4개의 유사한 변수 이름을 생성합니다.

v = genvarname({'A', 'A', 'A', 'A'})
v = 
    'A'    'A1'    'A2'    'A3'

예제 2

Excel® 스프레드시트 myproj_apr23의 워크시트 trial2에서 열 제목 hdr을 읽습니다.

[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' char(datetime('now','Format','HHmmSS'))])) = rand(1);
pause(60)
end

프로그램이 종료된 후에 작업 공간에서 기록된 데이터를 표시합니다.

record

record = 

    reading092610: 0.6541
    reading092710: 0.6892
    reading092811: 0.7482
    reading092911: 0.4505
    reading093011: 0.0838
         .
         .
         .

예제 4

who 함수의 출력값을 exclusions 목록에 넣어 MATLAB 작업 공간에서 고유한 변수 이름을 생성합니다.

for k = 1:5
   t1 = datetime('now');
   pause(uint8(rand * 10));
   t2 = datetime('now');
   v = genvarname('time_elapsed', who);
   eval([v ' = seconds(t2 - t1)'])
   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 함수가 반환한 값보다 작거나 같아야 합니다. varname 출력값에서 namelengthmax를 초과하는 모든 문자형 벡터는 잘립니다. 아래의 예제 6 항목을 참조하십시오.

아래의 예제 4에 설명된 방법으로 exclusions 입력값을 사용하지 않는 한 genvarname이 반환한 변수 이름은 현재 MATLAB 작업 공간에 있는 다른 변수 이름과 다르도록 보장되지 않습니다.

genvarname을 사용하여 구조체의 필드 이름을 생성할 경우 MATLAB은 MATLAB 작업 공간에 구조체를 위한 변수와 필드를 생성합니다. 아래의 예제 3 항목을 참조하십시오.

str 입력값에 공백 문자가 포함된 경우 genvarnamestr의 다음 영문자를 제거한 다음 대문자로 바꿉니다. str이 영숫자가 아닌 문자를 포함한 경우 genvarname은 이들 문자를 16진수 값으로 변환합니다.

확장 기능

버전 내역

R2006a 이전에 개발됨