오류 해결: 인식할 수 없는 함수 또는 변수
문제
자주 발생하는 다음 오류 메시지는 MATLAB®이 특정 프로그램 파일이나 변수를 찾을 수 없음을 나타냅니다.
'x'는 인식할 수 없는 함수 또는 변수입니다.
이 오류는 여러 상황에서 발생할 수 있습니다. 여기에서는 일반적인 시나리오를 식별하고 해결하는 방법을 설명합니다.
가능한 해결 방법
오타 찾기
가장 일반적인 원인 중 하나는 함수 또는 변수 이름의 철자를 잘못 입력하는 경우입니다. 특히, 이름이 길거나 비슷한 문자(예: 문자 l과 숫자 1)가 포함된 이름을 사용하는 경우 철자 오류를 범하기 쉬우며 이러한 오류는 발견하기가 쉽지 않습니다.
대개, 이름의 철자를 잘못 입력한 경우 명령 창에 정정된 이름이 제안됩니다. 예를 들어, 다음 명령은 함수 이름에 대문자가 포함되어 있으므로 실행되지 않습니다.
accumArray(1,10)
Unrecognized function or variable 'accumArray'. Did you mean: >> accumarray(1,10)
정정 제안된 명령을 실행하려면 Enter 키를 누르고 이를 무시하려면 Esc 키를 누르십시오.
작업 공간의 변수 확인하기
사용하려는 변수가 현재 작업 공간에서 사용 가능한지 확인하려면 whos 명령을 사용하십시오.
변수가 목록에 없는 경우 가능한 원인은 다음과 같습니다.
변수를 생성하는 코드가 현재 세션에서 아직 실행되지 않았거나,
clear또는clearvars명령을 호출하여 변수가 제거되었습니다. 이전에 변수를 생성했으면 그 코드는 대개 명령 내역에서 볼 수 있으며, 명령줄에서 위쪽 화살표 키를 사용하여 액세스할 수 있습니다.스크립트 파일을 편집하는 경우 코드가 변수에 값을 할당하기 전에 그 변수를 사용하려고 할 수 있습니다. 편집기에서 파일을 볼 때 변수 이름을 클릭하면 변수에 대한 모든 참조를 찾고 연산 순서를 확인할 수 있습니다.

변수가 작업 공간에 있고 오류를 발생시키는 함수를 작성하는 경우 그 변수를 함수에 입력 인수로 전달하는지 확인하십시오. 함수는 기본 작업 공간을 사용하지 않으므로 변수를 함수 작업 공간에 명시적으로 전달해야 합니다. 예를 들어, 다음 함수는 변수 c가 기본 작업 공간에 있더라도 이 변수를 찾을 수 없습니다.
function y = myfunction(x) y = x + c; end
이 문제를 해결하려면 함수 정의 라인에 c를 추가합니다.
function y = myfunction(x,c) y = x + c; end
그런 다음 함수 호출에 변수를 포함시킵니다.
Y = myfunction(X,c);
작업 공간에 대한 자세한 내용은 기본 작업 공간(Base Workspace)과 함수 작업 공간(Function Workspace) 항목을 참조하십시오.
함수 사용 가능 여부 확인하기
인식할 수 없는 항목이 함수이고 이 함수에 대해 잘 모르는 경우에는 설치된 소프트웨어에 포함되어 있는 함수인지 확인하십시오.
먼저, 해당 함수에 대한 가장 최근 MathWorks 문서를 검색합니다. 그 함수에 대한 문서가 없는 경우 MathWorks® File Exchange와 같은 다른 리소스를 확인하여 그 함수가 포함된 소프트웨어를 찾아보십시오.
MathWorks 문서에서 해당 함수를 찾은 경우 다음을 수행합니다.
문서의 예제 코드를 실행하여 해당 함수를 사용할 수 있는지 확인합니다. 코드가
Unrecognized function오류를 생성하지 않으면 함수 입력값 확인하기로 건너뛰어 문제 진단을 계속합니다.해당 함수가 현재 설치된 소프트웨어 버전보다 최신인지 확인합니다. 함수가 도입된 시기를 식별하려면 해당 도움말 페이지의 버전 내역 섹션을 참조하십시오.

MATLAB 버전을 확인하려면
version명령을 사용하십시오. 릴리스는 괄호 안에 표시되어 있습니다.version
ans = '24.1.0.2661297 (R2024a) Update 5'필요한 제품이 설치되어 있는지 확인합니다. 필요한 제품은 문서 페이지의 왼쪽 창에 있습니다.

해당 제품이 설치되었는지 확인하려면
ver명령을 사용하십시오.ver
. . . MATLAB Version 24.1 (R2024a) Deep Learning Toolbox Version 24.1 (R2024a) Statistics and Machine Learning Toolbox Version 24.1 (R2024a) Text Analytics Toolbox Version 24.1 (R2024a)
해당 제품이 목록에 없는 경우 설치되지 않았을 가능성이 높습니다. 제품 설치에 대한 자세한 내용은 애드온을 받고 관리하기 항목을 참조하십시오.
제품을 설치했는데
ver에서 다시 생성된 목록에 표시되지 않는 경우 툴박스 캐시를 업데이트합니다. 홈 탭의 환경 섹션에서
설정을 클릭합니다. MATLAB > 일반을 선택한 다음 툴박스 경로 캐시 업데이트를 클릭합니다.해당 제품이
ver의 목록에 여전히 나타나지 않으면 해당 툴박스에 대한 유효한 라이선스가 있는지 확인합니다.license명령을 사용하여 현재 유효한 라이선스를 표시하고 라이선스 센터를 방문하여 관련 제품을 확인합니다. 라이선스 관리에 대한 자세한 내용은 라이선스 관리하기 항목을 참조하십시오.
함수 입력값 확인하기
기존 변수를 사용하여 사용 가능한 함수를 호출하는 경우, 입력값이 함수가 인식할 수 없는 형식이면 실패할 수 있습니다. 필요한 구문과 입력 인수에 대해서는 함수 문서를 참조하십시오. doc 명령을 사용하여 함수 문서에 직접 액세스할 수 있습니다.
doc functionName
흔히 발생하는 식별하기 어려운 두 가지 문제는 예기치 않은 인덱싱 표현식을 사용하는 것과 객체 입력값을 누락하는 것입니다.
예기치 않은 인덱싱. 입력 인수의 위치에 콜론을 입력하면 MATLAB은 해당 코드를 함수 호출이 아닌 인덱싱 표현식으로 해석합니다. 예를 들어, isnumeric 함수는 단일 입력 배열을 받습니다(예: isnumeric(A)). 많은 경우 isnumeric은 여러 개의 인수가 있는 경우를 감지할 수 있습니다.
isnumeric(A,B)
Error using isnumeric Too many input arguments.
그러나 인수 대신 콜론을 사용하면 MATLAB은 isnumeric을 함수가 아닌 정의되지 않은 변수로 해석합니다.
isnumeric(A,:)
Unrecognized function or variable 'isnumeric'.
누락된 객체 입력값. 객체 메서드는 일반적으로 method(object,inputs) 형식의 함수 구문으로 문서에 나와 있습니다. 메서드에 대해 object.method(inputs) 형식의 점 표기법을 사용하는 데 익숙하다면, 함수 형식을 사용할 때는 객체를 첫 번째 입력값으로 포함시켜야 한다는 점을 기억하십시오.
함수를 사용 가능하도록 만들기
명령줄이나 다른 파일에서 호출할 함수를 작성하는 경우 다음을 참고하십시오.
함수와 동일한 이름을 갖는 파일에 함수를 저장합니다. 함수 이름과 파일 이름이 다른 경우 파일 이름이 함수 이름보다 우선합니다.
예를 들어,
curveplot이라는 함수를 확장자가.m또는.mlx인curveplot이라는 파일에 저장합니다. 함수curveplot이curveplotfunction.m이라는 파일에 있으면curveplot에 대한 호출은 실패합니다.함수가 파일에서 정의된 첫 번째 또는 유일한 함수인지 확인하고, 파일에서 함수 정의 바깥에 코드가 포함되지 않았는지 확인합니다. 함수가 이러한 조건을 충족하지 않으면 해당 함수는 로컬 함수이며 해당 파일 외부에서 호출할 수 없습니다. 자세한 내용은 로컬 함수(Local Function) 항목을 참조하십시오.
함수를 작성하는 방법에 대한 자세한 내용은 파일 내에서 함수 생성하기 항목을 참조하십시오.