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


假如我們編寫了一個積分通用程序,想使它更具有通用性,那么可以把被積函數也作為一個參數。在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函數換成我們想要的隨便什么函數。
定義函數句柄:
handle=@ functionname
之后就可以把handle作為參數傳遞給上面的函數(或者其他需要使用函數作為參數的函數)了。
例如在0~pi/2上對sin(x)進行積分,可以如下輸入:

>>fh=@sin;
>>myintegrate(fh,100,0,pi)
   ans =
            0.9947
函數句柄可以指定為任意的matlab函數——當然也包括我們自定義的函數,比如我們在myfun.m文件中定義了如下函數:
function f=myfun(x)
f=x;
end
那么,
>>fh2=@myfun;
>>myintegrate(fh2,100,0,1)
   ans =
            0.4967

 

 

文章轉載自 肥貓亂舞的博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM