Matlab에서 함수를 정의하는 몇 가지 방법

2506 단어 matlab
1. 함수 파일 + 호출 명령 파일: 사용자 정의 함수를 따로 정의하는 M 파일
예: 사용자 정의 구화 함수
사용자 정의 my_ 필요sum.m 파일로 함수 저장
function[s]=my_sum(n)
s=0;
for i=1:n
    s=s+i;
end

참고: 함수 이름(my_sum)은 파일 이름(my_sum.m)과 일치해야 합니다.
함수를 호출할 때 함수 파일은 현재 작업 디렉터리 아래에 있습니다.
2. 함수 파일 + 하위 함수: 여러 개의 하위 함수를 가진 M 파일 정의
예: 최대값 함수 구하기
function son_function( )        % 
% 
max1=find_max(1,2,3)
max2=find_max(7,3,9)

function max=find_max(a,b,c)    % 
if (a>=b)&(a>=c)
    max=a;
elseif (b>=a)&(b>=c)
    max=b;
else
    max=c;
end

주의: m 파일은 여러 개의 function을 쓸 수 있지만, 첫 번째 파일만 다른 파일에서 호출할 수 있고, 나머지 함수는 이 파일에서만 호출할 수 있습니다.
함수 이름은 주 함수 이름과 일치해야 한다
3, Inline: M 파일 없이 직접 정의
%inline 명령은 내연 함수를 정의하는 데 사용됩니다: f=inline ('함수 표현식','변수 1','변수 2',...).호출 방식: y=f(수치 목록)% 주의: 대입된 수치 목록 순서는 inline () 이 정의한 변수 이름 순서와 일치해야 합니다.
예:
f=inline('x^2+y','x','y');
z=f(2,3)

예:
inline 함수 호출 형식은 다음과 같습니다.
>> fname = inline('sum(1:n)','n')
출력:
fname =
     Inline function:
     fname(n) = sum(1:n)

먼저 함수 핸들을 구성하고 그 다음에 fval 함수를 이용하여 계산할 수 있다.
>> calsum = feval(fname,100)

출력:
calsum =
        5050

4. 익명 함수
matlab 함수 핸들 조작부호@ 를 사용하면 matlab 내장 함수와 사용자 정의 함수를 가리키는 함수 핸들을 정의할 수 있으며, 함수 핸들도 함수처럼 사용할 수 있습니다.
예:
x=-pi:0.1:pi;
fh={@cos,@sin};
plot(fh{2}(x))

fh=
    @cos     @sin
5.syms+subs: M 파일 없이 직접 정의
syms로 기호 표현식을 정의하고subs로 호출합니다.
syms f x % 
f=1/(1+x^2); % 
subs(f, ‘x’,  x )

주:syms에서 정의된 기호 변수는subs에서 대체할 때 인용부호는 생략할 수 있습니다.그러나syms 이후에 다른 형식으로 재정의되면 인용부호를 붙여야 합니다. 그렇지 않으면 바꿀 수 없습니다.이런 함수 정의 방법의 특징은 기호로 바꿀 수 있다는 것이다.
Syms f x
f=1/(1+x^2);
subs(f, ‘x’,’y^2’)

ans=     1/(1+(y^2)^2)
주: 이 방법의 단점은 기호를 사용하여 내핵을 연산하면 연산 속도가 크게 떨어진다는 것이다.
6, 문자열 + subs: M 파일 없이 직접 정의
문자열을 직접 정의하고subs 명령으로 호출합니다.예:
f=’1/(1+x^2)’ % 
z=subs(f,’x’,2)
g=subs(f,’x’,’y^2’)

주: 장점은 메모리를 가장 적게 사용하고 형식을 정의하는 데 자유롭다는 것이다.단점은 문자에 대한 기호 전환이 불가능하다는 것이다.대체할 기호가 호출되기 전에 수치 정의가 있으면,subs(f)를 직접 호출할 수 있습니다.예:
f=’x^2*y’;
x=2;y=3;
subs(f)
ans=12
7, @ 기호를 통해 직접 정의합니다.
예:
>> f=@(x,y)(x.^2-sin(y))

f =     @(x,y)(x.^2-sin(y))
>> f(2,3) ans =        3.8589

좋은 웹페이지 즐겨찾기