이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

matlabFunction

기호 표현식을 함수 핸들 또는 파일로 변환

설명

예제

g = matlabFunction(f)는 핸들 g를 사용하여 기호 표현식 또는 기호 함수 f를 MATLAB® 함수로 변환합니다. 변환된 함수는 Symbolic Math Toolbox™가 없어도 사용할 수 있습니다.

예제

g = matlabFunction(f1,...,fN)f1,...,fNN개 출력값을 갖는 MATLAB 함수로 변환합니다. 함수 핸들은 g입니다. f1,...,fN의 각 요소는 기호 표현식이나 기호 함수 또는 기호 표현식이나 기호 함수로 구성된 벡터가 될 수 있습니다.

예제

g = matlabFunction(___,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 사용합니다. Name,Value는 위에 열거된 구문의 입력 인수 다음에 지정할 수 있습니다.

예제

모두 축소

핸들 ht를 사용하여 기호 표현식 r을 MATLAB 함수로 변환합니다. 변환된 함수는 Symbolic Math Toolbox가 없어도 사용할 수 있습니다.

syms x y
r = sqrt(x^2 + y^2);
ht = matlabFunction(r)
ht =
  function_handle with value:
    @(x,y)sqrt(x.^2+y.^2)

쉼표로 구분된 입력값을 사용하여 여러 기호 표현식을 변환합니다.

ht = matlabFunction(r, r^2)
ht =
  function_handle with value:
    @(x,y)deal(sqrt(x.^2+y.^2),x.^2+y.^2)

기호 함수를 만들고 핸들 ht를 사용하여 MATLAB 함수로 변환합니다.

syms x y
f(x,y) = x^3 + y^3;
ht = matlabFunction(f)
ht = 
  function_handle with value:
    @(x,y)x.^3+y.^3

File 옵션을 지정하여 생성된 MATLAB 함수를 파일에 씁니다. 기존 파일이 있으면 덮어씁니다. 파일에 쓰는 경우 matlabFunctiont0, t1, … 등의 이름이 지정된 중간 변수를 사용하여 코드를 최적화합니다. Comments 옵션을 사용하여 파일에 주석을 포함합니다.

f에서 생성된 MATLAB 함수를 파일 myfile에 씁니다.

syms x
f = x^2 + log(x^2);
matlabFunction(f,'File','myfile');
function f = myfile(x)
%MYFILE
%    F = MYFILE(X)

%    This function was generated by the Symbolic Math Toolbox version 8.4.
%    01-Sep-2019 00:00:00

t2 = x.^2;
f = t2+log(t2);

파일에 주석 Version: 1.1을 포함합니다.

matlabFunction(f,'File','myfile','Comments','Version: 1.1')
function f = myfile(x)
...
%Version: 1.1
t2 = x.^2;
...

기호 표현식을 MATLAB 함수로 변환하고 결과 함수를 파일에 쓸 때 matlabFunction은 기본적으로 코드를 최적화합니다. 이 방법을 통해 해당 파일을 사용하는 추가 계산을 단순화하고 계산 속도를 높일 수 있습니다. 그러나 일부 기호 표현식과 기호 함수에서는 최적화된 코드를 생성하는 데 많은 시간이 소요될 수 있습니다. 코드 최적화를 비활성화하려면 Optimize를 사용하십시오.

기호 표현식을 만듭니다.

syms x
r = x^2*(x^2 + 1);

r을 MATLAB 함수로 변환하고 이 함수를 파일 myfile에 씁니다. 기본적으로 matlabFunction은 최적화된 코드를 포함하는 파일을 만듭니다.

f =  matlabFunction(r,'File','myfile');
function r = myfile(x)
%MYFILE
%    R = MYFILE(X)
t2 = x.^2;
r = t2.*(t2+1.0);

Optimize의 값을 false로 설정하여 코드 최적화를 사용하지 않습니다.

f =  matlabFunction(r,'File','myfile','Optimize',false);
function r = myfile(x)
%MYFILE
%    R = MYFILE(X)
r = x.^2.*(x.^2+1.0);

기호 행렬을 MATLAB 함수로 변환할 때, matlabFunction은 기본적으로 이를 조밀 행렬로 표현합니다. 입력된 기호 행렬의 요소가 대부분 0인 경우에는 희소 행렬로 표현하는 것이 더욱 효율적인 방법입니다.

3x3 기호 대각 행렬을 만듭니다.

syms x
A = diag(x*ones(1,3))
A =
[ x, 0, 0]
[ 0, x, 0]
[ 0, 0, x]

A를 숫자형 행렬을 나타내는 MATLAB 함수로 변환하고 결과를 파일 myfile1에 씁니다. 기본적으로, 생성된 MATLAB 함수는 모든 0 요소를 포함해 행렬의 각 요소를 지정하는 조밀한 숫자형 행렬을 만듭니다.

f1 = matlabFunction(A,'File','myfile1');
function A = myfile1(x)
%MYFILE1
%    A = MYFILE1(X)
A = reshape([x,0.0,0.0,0.0,x,0.0,0.0,0.0,x],[3,3]);

Sparsetrue로 설정하여 A를 MATLAB 함수로 변환합니다. 이제 생성된 MATLAB 함수는 0이 아닌 요소만 지정하고 모든 다른 요소는 0이라고 가정하는 희소 숫자형 행렬을 만듭니다.

f2 = matlabFunction(A,'File','myfile2','Sparse',true);
function A = myfile2(x)
%MYFILE2
%    A = MYFILE2(X)
A = sparse([1,2,3],[1,2,3],[x,x,x],3,3);

표현식을 MATLAB 함수로 변환할 때 결과 함수의 입력 인수 순서를 지정할 수 있습니다. 또한 일부 입력 인수는 단일 변수 대신 벡터로 지정할 수도 있습니다.

기호 표현식을 만듭니다.

syms x y z
r = x + y/2 + z/3;

r을 MATLAB 함수로 변환하고 이 함수를 파일 myfile에 씁니다. 기본적으로 matlabFunction은 기호 표현식을 변환할 때 입력 인수의 사전적 순서를 사용합니다.

matlabFunction(r,'File','myfile');
function r = myfile(x,y,z)
%MYFILE
%    R = MYFILE(X,Y,Z)
r = x+y./2.0+z./3.0;

Vars 인수를 사용하여, 생성된 MATLAB 함수에 대한 입력 인수의 순서를 지정합니다.

matlabFunction(r,'File','myfile','Vars',[y z x]);
function r = myfile(y,z,x)
%MYFILE
%    R = MYFILE(Y,Z,X)
r = x+y./2.0+z./3.0;

이제 표현식 r을 두 번째 입력 인수가 벡터인 MATLAB 함수로 변환합니다.

syms x y z t
r = (x + y/2 + z/3)*exp(-t);
matlabFunction(r,'File','myfile','Vars',{t,[x y z]});
function r = myfile(t,in2)
%MYFILE
%    R = MYFILE(T,IN2)
x = in2(:,1);
y = in2(:,2);
z = in2(:,3);
r = exp(-t).*(x+y./2.0+z./3.0);

기호 표현식을 MATLAB 함수로 변환할 때 출력 변수의 이름을 지정할 수 있습니다. matlabFunctionFile 인수가 없거나 파일 경로가 빈 문자형 벡터로 지정된 경우 함수 핸들을 만들고 Outputs 플래그를 무시합니다.

기호 표현식 rq를 만듭니다.

syms x y z
r = x^2 + y^2 + z^2;
q = x^2 - y^2 - z^2;

rq를 MATLAB 함수로 변환하고 결과 함수를 파일 myfile에 쓰면 두 요소 name1name2로 구성된 벡터가 반환됩니다.

f = matlabFunction(r,q,'File','myfile',...
                   'Outputs',{'name1','name2'});
function [name1,name2] = myfile(x,y,z)
%MYFILE
%    [NAME1,NAME2] = MYFILE(X,Y,Z)
t2 = x.^2;
t3 = y.^2;
t4 = z.^2;
name1 = t2+t3+t4;
if nargout > 1
    name2 = t2-t3-t4;
end

입력 인수

모두 축소

MATLAB 함수로 변환할 기호 입력값으로, 기호 표현식, 기호 함수, 기호 벡터 또는 기호 행렬로 지정됩니다. 희소 기호 벡터 또는 희소 기호 행렬을 변환할 때는 이름-값 쌍 인수 'Sparse',true를 사용합니다.

N개의 출력값이 있는 MATLAB 함수로 변환할 기호 입력값으로, 여러 개의 기호 표현식, 여러 개의 기호 함수, 여러 개의 기호 벡터 또는 여러 개의 기호 행렬이 쉼표로 구분되어 지정됩니다.

matlabFunction은 기호 벡터 또는 기호 행렬의 각 요소에 대해 개별 출력 인수를 만들지 않습니다. 예를 들어, g = matlabFunction([x + 1, y + 1])은 한 개의 출력 인수가 있는 MATLAB 함수를 만들고, g = matlabFunction(x + 1, y + 1)은 두 개의 출력 인수가 있는 MATLAB 함수를 만듭니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: matlabFunction(f,'File','myfile','Optimize',false)

파일 헤더에 포함할 주석으로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열 또는 string형 벡터로 지정됩니다.

생성된 MATLAB 함수를 포함하는 파일에 대한 경로로, 문자형 벡터로 지정됩니다. 생성된 함수는 double형의 인수를 받으며 Symbolic Math Toolbox가 없어도 사용할 수 있습니다. File이 비어 있는 경우 matlabFunction은 익명 함수를 생성합니다. File.m으로 끝나지 않으면 함수가 .m을 추가합니다.

파일에 쓰는 경우 matlabFunctiont0, t1, … 등의 이름이 지정된 중간 변수를 사용하여 코드를 최적화합니다. 코드 최적화를 비활성화하려면 Optimize 인수를 사용하십시오.

파일에 주석과 함께 MATLAB 함수 쓰기 항목을 참조하십시오.

함수 파일에 쓴 코드의 최적화를 방지하는 플래그로, false 또는 true로 지정됩니다.

파일에 쓰는 경우 ccodet0, t1, … 등의 이름이 지정된 중간 변수를 사용하여 코드를 최적화합니다.

File 인수가 없거나 파일 경로가 빈 문자형 벡터로 지정된 matlabFunction은 함수 핸들을 만듭니다. 이 경우 코드가 최적화되지 않습니다. Optimizetrue로 설정하여 코드 최적화를 강제로 적용하려고 하면 matlabFunction에서 오류가 발생합니다.

코드 최적화 비활성화하기 항목을 참조하십시오.

희소 행렬 생성과 조밀 행렬 생성 간을 전환하는 플래그로, true 또는 false로 지정됩니다. 'Sparse',true를 지정하면, 생성된 MATLAB 함수는 희소 숫자형 행렬에 의한 기호 행렬을 나타냅니다. 0인 요소를 많이 포함하는 기호 행렬을 변환할 때는 'Sparse',true를 사용하십시오. 희소 행렬에 대한 연산이 조밀 행렬에 대한 동일한 연산보다 효율적인 경우가 많습니다.

희소 행렬 생성하기 항목을 참조하십시오.

생성된 MATLAB 함수의 입력 변수 또는 입력 벡터의 순서로, 문자형 벡터, 기호 변수로 구성된 벡터 또는 문자형 벡터, 기호 변수, 기호 변수의 벡터로 구성된 1차원 셀형 배열로 지정됩니다.

지정한 입력 변수의 개수는 f에서 사용 가능한 변수의 개수보다 크거나 같아야 합니다. Vars로 지정한 입력 변수와 Outputs로 지정한 출력 변수에 같은 이름을 사용하지 마십시오.

기본적으로 기호 표현식의 변환 순서는 사전순입니다. 기호 함수를 변환할 때 입력 인수는 다른 변수 앞에 표시되고 다른 모든 변수는 사전순으로 정렬됩니다.

생성된 함수에 대한 입력 인수 지정하기 항목을 참조하십시오.

출력 변수의 이름으로, 문자형 벡터로 구성된 1차원 셀형 배열로 지정됩니다.

출력 변수 이름을 지정하지 않으면 matlabFunction을 호출할 때 사용한 이름과 동일하게 지정됩니다. 개별 변수 대신 표현식을 사용하여 matlabFunction을 호출한 경우 출력 변수의 디폴트 이름은 단어 out과 그 뒤에 오는 숫자(예: out3)로 구성됩니다.

Vars로 지정한 입력 변수와 Outputs로 지정한 출력 변수에 같은 이름을 사용하지 마십시오.

File 인수가 없거나 파일 경로가 빈 문자형 벡터로 지정된 matlabFunction은 함수 핸들을 만듭니다. 이 경우 matlabFunctionOutputs 플래그를 무시합니다.

출력 변수 지정하기 항목을 참조하십시오.

출력 인수

모두 축소

수치 함수에 대한 입력 인수로 사용할 수 있는 함수 핸들로, MATLAB 함수 핸들로 반환됩니다.

  • File 인수를 사용하는 경우, rehash를 사용하면 생성된 함수를 즉시 사용할 수 있습니다. rehash는 알려진 파일들의 MATLAB 목록을 검색 경로의 디렉터리에서 업데이트합니다.

  • File 옵션이 비어 있으면 익명 함수가 반환됩니다.

R2008b에 개발됨