str2func
문자형 벡터에서 함수 핸들 생성
설명
예제
문자형 벡터를 함수 핸들로 변환하기
문자형 벡터 'ones'
를 함수 핸들로 변환하고 핸들을 사용하여 ones
함수를 호출합니다.
c = 'ones';
fh = str2func(c)
fh = function_handle with value:
@ones
fh(1,5)
ans = 1×5
1 1 1 1 1
문자형 벡터를 익명 함수에 대한 핸들로 변환하기
익명 함수를 나타내는 문자형 벡터를 함수 핸들로 변환합니다. 작업 공간 변수는 str2func
함수에서 사용할 수 없습니다. 따라서 표현식을 실행하는 데 필요하지만 함수 입력값으로 정의되지 않은 값을 문자형 벡터에 포함시키십시오.
익명 함수 7x – 13을 나타내는 문자형 벡터를 정의합니다. 문자형 벡터를 함수 핸들로 변환합니다.
str = '@(x)7*x-13';
fh = str2func(str)
fh = @(x)7*x-13
핸들을 사용하여 익명 함수를 호출합니다.
fh(3)
ans = 8
문자형 벡터에 작업 공간 변수를 포함시키면 str2func
는 함수 핸들을 생성하지만, 이 함수 핸들을 불러오면 MATLAB에서 오류가 발생합니다.
a = 13;
str = '@(x)7*x-a';
fh = str2func(str);
fh(3)
Undefined function or variable 'a'. Error in @(x)7*x-a
str2func
와 eval
간의 차이점 검토하기
주사위 굴리기 시뮬레이션에 사용되는 2개의 함수 핸들을 반환하는 함수를 만듭니다. 첫 번째 주사위(d1
)는 1에서 6 사이에 있는 숫자를 반환하지만 두 번째 주사위(d2
)는 항상 숫자 1을 반환합니다.
MATLAB 경로에 있는 폴더에 다음 함수를 만듭니다. str2func
가 익명 함수를 나타내는 문자형 벡터와 함께 사용될 경우 로컬 함수에 액세스할 수 없습니다. 따라서 MATLAB은 내장 함수 randi
를 호출하고 1에서 6 사이에 있는 숫자를 반환합니다. eval
함수가 로컬 함수에 액세스할 수 있기 때문에 d2
는 오버로드된 randi
를 사용하고 항상 1을 반환합니다.
function [d1,d2] = diceRoll str = '@()randi([1 6],1)'; d1 = str2func(str); d2 = eval(str); end function r = randi(~,~) r = 1; end
명령 프롬프트에서 diceRoll
함수를 호출합니다.
[p1,p2] = diceRoll
p1 = function_handle with value: @()randi([1,6],1) p2 = function_handle with value: @()randi([1,6],1)
p1
과 p2
가 모두 동일한 익명 함수와 연관된 것으로 보입니다.
함수 핸들을 불러옵니다. p1
의 결과는 1에서 6 사이입니다. p2
의 결과는 항상 1입니다.
p1() p2()
ans = 5 ans = 1
입력 인수
str
— 함수 핸들로 변환할 텍스트
함수 이름 | 익명 함수의 문자형 벡터 표현 | 익명 함수의 string형 스칼라 표현
함수 핸들로 변환할 텍스트로, 함수 이름, 익명 함수의 문자형 벡터 표현 또는 익명 함수의 string형 스칼라 표현으로 지정됩니다.
예: str = 'cos'
예: str = '@(x) x.^2'
팁
func2str
을 사용하여 텍스트를 문자형 벡터로 변환한 다음str2func
를 사용하여 다시 핸들로 변환할 경우, 변수 값을 저장하는 함수 핸들은 원래 값을 유지하지 않습니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
컴파일할 때 입력 인수는 알려진 상수여야 합니다.
코드 생성 시 익명 함수 또는 로컬 함수를 나타내는 입력 인수는 지원되지 않습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)