Main Content

evalin

지정된 작업 공간에서 MATLAB 표현식 실행

설명

예제

evalin(workspace,expression)expression으로 표현되는 MATLAB® 코드를 지정된 작업 공간의 변수를 사용하여 실행합니다.

참고

보안 고려 사항: 신뢰할 수 없는 사용자 입력값을 사용하여 evalin 함수를 호출할 때는 예기치 않은 코드 실행을 방지하기 위해 입력값의 유효성을 검사하십시오. 신뢰할 수 없는 사용자 입력값의 예로는 모르는 사용자나 통제할 수 없는 사용자의 입력값을 들 수 있습니다. 이 우려 사항을 해결해야 하는 경우 다음과 같은 접근 방법을 고려하십시오.

  • evalin에 대한 입력값의 유효성을 검사합니다. 먼저 허용되는 동작에 대해 알아봅니다. 그런 다음, 이와 다른 동작을 발견했다면 실행을 허용하지 마십시오.

  • evalin 함수를 다른 대안으로 대체합니다. 자세한 내용은 eval 함수의 대안 항목을 참조하십시오.

성능 향상을 위한 고려 사항: 대부분의 경우 evalin 함수를 사용하는 것은 다른 MATLAB 함수나 언어 구문을 사용하는 것에 비해 효율성도 떨어지며 결과로 생성되는 코드는 읽고 디버그하기가 더 어려울 수 있습니다. evalin의 대안을 사용하는 방안을 고려하십시오.

예제

[output1,...,outputN] = evalin(workspace,expression)expression의 출력을 지정된 변수로 반환합니다. 이 구문이 유효하려면 표현식 output1,...,outputN = expression도 유효해야 합니다.

예제

모두 축소

evalin 함수를 사용하여 MATLAB 기본 작업 공간에 있는 변수의 값을 가져와서 새 변수에 저장합니다.

varmagic 함수가 반환하는 5×5 행렬로 정의합니다.

var = magic(5);

MATLAB 기본 작업 공간에 있는 변수 var의 값을 가져와서 변수 v에 저장합니다.

v = evalin('base','var')
v =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

입력 인수

모두 축소

표현식을 실행할 작업 공간으로, 'base' 또는 'caller'로 지정됩니다.

MATLAB 기본 작업 공간은 MATLAB 명령줄에서 인식되는 작업 공간입니다(디버거 환경이 아닌 경우). 호출자 작업 공간은 현재 실행 중인 함수를 호출한 함수의 작업 공간입니다. MATLAB 명령줄에서 호출되는 함수 측면에서 보면 기본 작업 공간과 호출자 작업 공간은 동일합니다.

참고

dbup 또는 dbdown을 통해 로컬 작업 공간 컨텍스트를 변경한 후에 evalin('caller',expression)을 MATLAB 디버거에서 사용하는 경우 MATLAB은 현재 작업 공간 컨텍스트의 스택에서 한 수준 위에 있는 함수 컨텍스트에서 표현식을 실행합니다.

실행할 표현식으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. expression은 유효한 MATLAB 표현식이어야 하며 MATLAB 키워드를 포함하지 않아야 합니다. 단어가 MATLAB 키워드인지 확인하려면 iskeyword 함수를 사용하십시오.

예: evalin('base','magic(5)')

출력 인수

모두 축소

실행된 표현식의 출력값으로, 임의의 MATLAB 데이터형으로 반환됩니다.

제한 사항

  • evalin('caller',expression)은 호출자 작업 공간에서 변수만 찾으며 호출자의 함수는 찾지 않습니다. 이런 이유로 호출자에 정의된 함수에 대한 핸들을 구성하는 데는 evalin을 사용할 수 없습니다.

  • evalin은 표현식을 재귀적으로 실행하는 데 사용할 수 없습니다. 예를 들어, evalin('caller','evalin(''caller'',''x'')') 문은 유효하지 않습니다.

  • 익명 함수나 중첩 함수, 또는 중첩 함수를 감싸는 함수 내에서 evalin을 사용하는 경우, 실행된 expression은 변수를 만들지 않습니다.

  • MATLAB 구문 분석기가 코드를 보다 엄격하게 검사하고 처리되지 않은 오류와 기타 예기치 않은 동작이 발생하지 않도록 하려면 evalin 함수에 대한 입력값에 출력 인수를 포함하지 마십시오. 예를 들어, evalin('base',['output = ',expression]) 문은 권장되지 않습니다.

    대신 evalin 함수에 대한 출력 인수를 지정하여 실행된 표현식의 결과를 저장하십시오. 예를 들면 다음과 같습니다.

      output = evalin('base',expression)

버전 내역

R2006a 이전에 개발됨