이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
genvarname
문자열에서 유효한 변수 이름 생성하기
호환성
참고
genvarname
은 향후 릴리스에서 제거될 예정입니다. matlab.lang.makeValidName
과 matlab.lang.makeUniqueStrings
를 대신 사용하십시오.
구문
varname = genvarname(str)
varname = genvarname(str, exclusions)
설명
varname = genvarname(str)
은 str
입력값과 유사하거나 동일하고 유효한 변수 이름으로 사용될 수 있는 string형 또는 문자형 벡터 varname
을 생성합니다. str
은 string형, string형 배열, 문자형 배열, 또는 문자형 행 벡터로 구성된 셀형 배열일 수 있습니다. str
이 string형 배열 또는 문자형 벡터로 구성된 셀형 배열이면 genvarname
은 varname
에 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
입력값에 공백 문자가 포함된 경우 genvarname
은 str
의 다음 영문자를 제거한 다음 대문자로 바꿉니다. str
이 영숫자가 아닌 문자를 포함한 경우 genvarname
은 이들 문자를 16진수 값으로 변환합니다.
확장 기능
버전 내역
R2006a 이전에 개발됨