본문 바로가기
programming language/MATLAB

MATLAB symbolic math 수식으로 함수 만들기 matlabFunction()

by __observer__ 2011. 4. 9.
반응형

오늘 포스팅에서는 symbolic math 를 통해 계산한 수식에 대해 함수를 만드는 방법에 대해 설명 드리겠습니다.

 

일단 다음과 같이 수식을 정의 해 보죠.

 

syms a b x

 

f=a*x^2+x + 8

 

f =

a*x^2 + x + 8

 

위 수식에서 a 값을 2*b 값으로 치환을 해보겠습니다. 치환 할 때는 subs() 함수를 이용합니다.

 

f1=subs(f, a, 2*b)

 

f1 =

2*b*x^2 + x + 8

 



그럼 이제 위 f1 식을 함수로 정의해 보겠습니다. symbolic 식을 함수로 표현 할 때는 matlabFunction() 이라는 함수를 사용합니다.

 

hf1 = matlabFunction(f1)

 

hf1 =

@(b,x)x+b.*x.^2.*2.0+8.0

 

 

위와 같이 matlabFunction() 함수를 사용하면 기본적으로 function handle로 결과를 반환 합니다. 입력이 b, x 인 function handle hf1 을 반환하는 것을 확인 할 수 있죠.




function 파일을 만들고 싶을 때는 command 창에 다음과 같이 명령어를 입력합니다.

 

matlabFunction(f1,'file','function_file1.m');

 

위의 결과로 function_file1.m 이라는 함수가 만들어 지고 다음과 같이 파일로 저장됩니다. 




위 결과를 보면 함수의 입력이 b, x 의 순서인 것을 확인 할 수 있습니다. 다음 명령어를 통해 입력의 순서를 x,b 로 설정해 보겠습니다.
 

matlabFunction(f1,'file','function_file1.m','vars',[x b]);

 

위 명령의 실행 결과 아래와 같이 x, b 의 순서로 설정되었습니다. 




이제 함수의 출력 변수 명을 변경해 보죠. 위 식에서 f1 이었던 출력 변수명을 out_f 라는 변수명으로 바꿔보죠.

 

matlabFunction(f1,'file','function_file1.m','vars',[x b],'outputs',{'out_f'} );

 

  
출력 변수 명을 설정 할 때는 위 명령어에서 중괄호{} 를 이용하였습니다. 즉 cell class 로 설정해 주셔야 합니다.

 

위 명령어의 결과로 다음과 같은 함수가 만들어 집니다. 




반응형

댓글