Main Content

오류 해결: 정의되지 않은 함수 또는 변수

문제

MATLAB®에서 함수 또는 변수를 사용하는 동안 다음과 같거나 이와 유사한 오류 메시지가 나타날 수 있습니다.

Undefined function or variable 'x'.

이러한 오류는 대개 MATLAB이 현재 디렉터리나 검색 경로에서 특정 변수 또는 MATLAB 프로그램 파일을 찾을 수 없음을 나타냅니다.

가능한 해결 방법

함수 또는 변수 이름 철자 확인하기

가장 일반적인 원인 중 하나는 함수 또는 변수 이름의 철자를 잘못 입력하는 경우입니다. 특히, 이름이 길거나 비슷한 문자(예: 문자 l과 숫자 1)가 포함된 이름을 사용하는 경우 철자 오류를 범하기 쉬우며 이러한 오류는 발견하기가 쉽지 않습니다.

대개, MATLAB 함수의 철자를 잘못 입력한 경우 명령 창에 정정된 함수 이름이 제안됩니다. 예를 들어, 다음 명령은 함수 이름에 대문자가 포함되어 있으므로 실행되지 않습니다.

accumArray
Undefined function or variable 'accumArray'.
 
Did you mean:
>> accumarray

이 경우 정정 제안된 명령을 실행하려면 Enter 키를 누르고 이를 무시하려면 Esc 키를 누르십시오.

입력값이 함수 구문에 대응하는지 확인하기

객체 메서드는 일반적으로 함수 구문을 사용하여 호출합니다(예: method(object,inputs)). 또는, 점 표기법을 사용하여 호출할 수도 있습니다(예: object.method(inputs)). 흔히 범하는 오류 중 하나는 이러한 구문을 혼용하는 것입니다. 예를 들어, 함수 구문을 사용하여 메서드를 호출하는데 점 표기법 구문을 따라 입력값을 제공하고 객체를 입력값으로 지정하지 않고 생략하는 것입니다(예: method(inputs)). 이러한 오류를 방지하려면 객체의 메서드를 호출할 때 함수 구문의 첫 번째 입력값이나 점 표기법의 첫 번째 식별자를 통해 객체를 먼저 지정해야 합니다.

함수 이름이 파일 이름과 일치하는지 확인하기

함수를 작성할 때 해당 함수 정의 라인에 함수 이름을 설정합니다. 이 함수 이름은 함수를 저장하는 파일 이름과 항상 일치해야 합니다. 예를 들어, curveplot이라는 함수를 생성하는 경우

function curveplot(xVal, yVal)
     - program code -

해당 함수를 포함하는 파일의 이름을 curveplot.m으로 지정해야 합니다. 이 함수의 pcode 파일을 생성하는 경우 해당 파일의 이름을 curveplot.p로 설정합니다. 함수 이름과 파일 이름이 충돌하는 경우, 파일 이름이 함수에 지정된 이름을 재정의합니다. 이 예제에서, curveplot 함수를 curveplotfunction.m이라는 이름의 파일에 저장할 경우 이 함수 이름을 사용하여 함수를 불러오려고 하면 실패하게 됩니다.

curveplot
Undefined function or variable 'curveplot'.

이러한 문제가 발생하면 서로 같은 이름을 갖도록 함수 이름이나 파일 이름을 변경하십시오.

이 함수를 정의하는 파일을 찾으려면 다음과 같이 MATLAB의 파일 찾기 유틸리티를 사용하십시오.

  1. 탭의 파일 섹션에서 파일 찾기를 클릭합니다.

  2. 다음 이름의 파일 찾기*.m을 입력합니다.

  3. 텍스트가 포함된 파일 찾기에 함수 이름을 입력합니다.

  4. 찾기 버튼을 클릭합니다.

The find files interface

필요한 툴박스가 설치되어 있고 올바른 버전인지 확인하기

MATLAB이나 해당 툴박스의 내장 함수를 사용할 수 없는 경우 함수가 설치되어 있고 올바른 버전인지 확인합니다.

필요한 함수를 포함하는 툴박스를 알지 못하는 경우 https://www.mathworks.com/help에서 함수 도움말 문서를 검색하십시오. 툴박스 이름이 함수 도움말 페이지 맨 위에 표시됩니다. 또는, 함수가 종속되어 있는 툴박스를 식별하는 단계를 보려면 프로그램 종속성(Dependency) 식별하기 항목을 참조하십시오.

함수가 속한 툴박스를 확인했으면 license 함수를 사용하여 MATLAB을 실행하는 시스템에 설치되어 있는 툴박스를 확인합니다. license 함수는 현재 설치되어 있는 모든 MathWorks® 제품 목록을 표시합니다. license 함수가 표시하는 출력값에서 필요한 툴박스를 찾을 수 있으면 해당 툴박스가 설치되어 있는 것입니다. 그렇지 않은 경우 해당 툴박스를 사용하려면 설치해야 합니다. MathWorks 제품 설치 관련 도움말은 라이선스 서버에 라이선스 매니저 설치하기 항목을 참조하십시오.

함수 툴박스에 액세스하는 데 사용된 경로 확인하기

사용자 지정 파일 경로가 있는 경우 이 단계를 수행하면 해당 경로가 삭제됩니다.

MATLAB 검색 경로는 파일 시스템 내 전체 폴더 중 일부를 의미합니다. MATLAB은 이 검색 경로를 사용해서 MathWorks 제품이 사용하는 파일을 효율적으로 검색합니다. 자세한 내용은 MATLAB 검색 경로란? 항목을 참조하십시오.

사용하려는 함수가 툴박스에 속해 있는 경우 ver을 사용하여 해당 툴박스를 사용할 수 있는지 확인하십시오.

MATLAB은 캐시 파일에 툴박스 정보를 저장하기 때문에 이 캐시를 먼저 업데이트한 후 경로를 재설정해야 합니다.

  1. 탭의 환경 섹션에서 기본 설정을 클릭합니다.

    기본 설정 대화 상자가 나타납니다.

  2. MATLAB > 일반 페이지에서 툴박스 경로 캐시 업데이트를 선택합니다.

  3. 탭의 환경 섹션에서 경로 설정을 선택합니다.

    경로 설정 대화 상자가 열립니다.

  4. 디폴트 값을 선택합니다.

    작은 대화 상자가 열리고 계속 진행할 경우 현재 경로 설정이 손실된다는 내용의 경고가 표시됩니다. 계속 진행하려면 를 선택하십시오.

license 함수를 실행하여 툴박스가 설치되어 있는지 확인합니다. 설치되어 있지 않은 경우, 이 함수를 사용하려면 이 툴박스를 다시 설치해야 합니다. 툴박스 설치에 대한 자세한 내용은 How do I install additional toolboxes into an existing installation of MATLAB을 참조하십시오.

license 함수가 툴박스를 표시하면 다음 명령을 실행하여 함수를 찾을 수 있는지 확인합니다.

which -all <functionname>

여기서 <functionname>을 해당 함수 이름으로 바꾸어야 합니다. MATLAB이 함수 파일을 찾으면 해당 경로를 표시합니다. addpath 함수를 사용하여 경로에 해당 파일을 추가할 수 있습니다. 파일이 검색되지 않는 경우 필요한 툴박스가 설치되어 있고 올바른 버전인지 확인하십시오.

라이선스가 유효한지 확인하기

MATLAB 툴박스의 내장 함수를 사용할 수 없는데 툴박스가 설치되어 있는 것을 확인한 경우 해당 툴박스의 라이선스가 유효한지 확인합니다. 현재 유효한 라이선스를 표시하려면 license를 사용하십시오. 라이선스를 관리하는 데 추가 도움이 필요하면 라이선스 관리하기 항목을 참조하십시오.