Main Content

inputname

함수 입력의 변수 이름

설명

예제

s = inputname(argNumber)는 인수 번호 argNumber에 대응하는 작업 공간 변수 이름 s를 반환합니다.

MATLAB® 명령 프롬프트 또는 명령 프롬프트에서 호출하는 스크립트에서는 inputname을 호출할 수 없습니다.

예제

모두 축소

현재 작업 폴더에 있는 파일 getname.m에 다음 함수를 생성합니다.

function getname(a,b)
s = inputname(1);
disp(['First calling variable is ''' s '''.'])
end

변수 xy를 사용하여 명령 프롬프트에서 함수를 호출합니다.

x = 5;
y = 3;
getname(x,y)
First calling variable is 'x'.

변수 대신 값을 사용하여 함수를 호출합니다. 입력값이 이름을 갖지 않으므로 inputname 함수는 빈 char 배열을 반환합니다.

getname(5,3)
First calling variable is ''.

현재 작업 폴더에 있는 파일 getname2.m에 다음 함수를 생성합니다.

function getname2(a,b,c)
for m = 1:nargin
    disp(['Calling variable ' num2str(m) ' is ''' inputname(m) '''.'])
end

명령 프롬프트에서 함수를 호출합니다.

x = {'hello','goodbye'};
y = struct('a',42,'b',78);
z = rand(4);

getname2(x,y,z)
Calling variable 1 is 'x'.
Calling variable 2 is 'y'.
Calling variable 3 is 'z'.

y 필드를 사용하여 함수를 호출합니다. 입력 인수에 점 인덱싱이 포함되어 있으므로 inputname 함수는 두 번째 변수 이름과 모든 후속 변수 이름에 대해 빈 char 배열을 반환합니다.

getname2(x,y.a,z)
Calling variable 1 is 'x'.
Calling variable 2 is ''.
Calling variable 3 is ''.

x의 두 번째 셀을 사용하여 함수를 호출합니다. 입력 인수에 셀 인덱싱이 포함되어 있으므로 inputname 함수는 첫 번째 변수 이름과 모든 후속 변수 이름에 대해 빈 char 배열을 반환합니다.

getname2(x{2},y,z)
Calling variable 1 is ''.
Calling variable 2 is ''.
Calling variable 3 is ''.

입력 인수

모두 축소

함수 입력 인수의 개수로, 양의 실수형 정수 스칼라 값으로 지정됩니다. argNumber가 함수에 전달되는 입력 인수의 개수를 초과할 경우 MATLAB에서 오류가 발생합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

출력 인수

모두 축소

작업 공간 변수 이름으로, 문자형 벡터로 반환됩니다. 입력 인수에 이름이 없을 경우 inputname 함수는 빈 문자형 배열('')을 반환합니다. 예를 들어, 입력 인수가 변수가 아니라 숫자, 표현식, 인덱싱 표현식인 경우 입력 인수에 이름이 없습니다.

inputname을 호출하는 함수에 대한 입력 인수에 셀 인덱싱 또는 점 인덱싱이 포함된 경우 inputname은 해당 변수와 후속 변수에 대해 빈 문자형 배열을 반환합니다. 셀형 배열에서 요소를 추출하거나 구조체에서 필드를 추출하면 쉼표로 구분된 목록이 생성됩니다. 쉼표로 구분된 목록은 후속 입력의 위치가 동적이 되도록 합니다. 따라서, inputname은 목록을 생성한 인수와 후속 인수에 대해 ''를 반환합니다.

  • inputname을 사용하면 함수에 입력 변수의 이름을 손쉽게 전달할 수 있습니다. 예를 들어, 함수는 입력값의 데이터형을 확인하고, 잘못된 유형을 찾을 경우 작업 공간에서 변수의 이름을 표시합니다.

  • inputname을 코드의 중요 경로에 사용하거나 eval, evalin, assignin 등의 명령에 사용되는 변수 이름을 가져오기 위한 용도로는 사용하지 마십시오. 이런 방식으로 inputname을 사용하면 코드를 관리하기가 어려워질 수 있습니다.

  • inputname이 오버로드된 subsref, subsasgn, subsindex, numArgumentsFromSubscript, numel 또는 속성 set나 get 메서드 중 하나에서 호출되는 경우 오류를 반환합니다.

  • inputname은 전달된 인덱싱 연산에 포함된 인수 이름을 가져올 수 없습니다. 대신 빈 string형을 반환합니다.

  • inputname을 호출하는 함수가 MATLAB 코드 파일에서 호출되지 않으면, inputname은 MATLAB 코드에서 호출을 찾고 여기에서 찾은 이름을 반환할 때까지 스택에 쌓입니다. 예를 들어, inputname이 내장 함수나 MEX 함수에서 호출되는 경우 이러한 동작이 발생합니다.

    내장 함수 arrayfun이 함수 핸들을 통해 inputname을 호출하는 다음 코드를 검토해 보십시오.

    fn=@(x) inputname(x);
    a=1:4;
    arrayfun(fn,a,'uniformoutput',false)
    ans = 
    
        'fn'    'a'    ''    ''

    inputname 함수는 MATLAB 코드로부터의 호출을 찾을 때까지 스택에 쌓입니다. 이 경우 MATLAB 코드가 기본 작업 공간이며, inputname이 그 기본 작업 공간에서 변수 이름을 반환합니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| |