1. 程式人生 > >Matlab中如何將(自定義)函式作為引數傳遞給另一個函式

Matlab中如何將(自定義)函式作為引數傳遞給另一個函式

原文連結:http://blog.sina.com.cn/s/blog_53f2911901000a1h.html


假如我們編寫了一個積分通用程式,想使它更具有通用性,那麼可以把被積函式也作為一個引數。在c/c++中,可以使用函式指標來實現上邊的功能,在matlab中如何實現呢?使用函式控制代碼——這時類似於函式指標的一項功能。
假如我們現在已經編寫了一個辛普森方法積分的函式如下,我們要把函式作為引數傳給它(當然啦,matlab早已經提供給我們非常牛x的積分函數了,這裡只是個例子而已):
function g=myintegrate(f,N,a,b)
%integration using simpson method
n=N/2;
h=(b-a)/N;
x=a:h:b;
fv=f(x);
s=sum(fv(1:2:2*n-1))*4;
s=s+sum(fv(2:2:2*n))*2;
s=s+f(a)+f(b);
s=s*h/3;
g=s;
現在要做的工作就是如何把上面的f函式換成我們想要的隨便什麼函式。
定義函式控制代碼:

[email protected] functionname
之後就可以把handle作為引數傳遞給上面的函式(或者其他需要使用函式作為引數的函式)了。
例如在0~pi/2上對sin(x)進行積分,可以如下輸入:
>>[email protected];
>>myintegrate(fh,100,0,pi)
ans =
    0.9947
函式控制代碼可以指定為任意的matlab函式——當然也包括我們自定義的函式,比如我們在myfun.m檔案中定義瞭如下函式:
function f=myfun(x)
f=x;
那麼,
>>[email protected]
;
>>myintegrate(fh2,100,0,1)
ans =
    0.4967