Matlab定義符號函數(ZZ)


M文件函數(M file function)
在線函數(Inline Function)
匿名函數(Anonymous Function)


1.M文件函數
范例
function c=myadd(a,b)
%這里可以寫函數的使用說明,前面以%開頭
%在工作區中,help myadd將顯示此處的說明
c=a+b;
%end %非必須的
第一行function告訴Matlab這是一個函數,a,b是輸入,c是輸出,myadd是函數名。以m文件定義的函數必須保存為函數名的形式,上例中,函數應保存為myadd.m。要使用myadd函數,該函數必須在Matlab的搜索路徑中。
調用方式:
在Matlab命令符后輸入
a=1;b=2;
c=myadd(a,b)
關於m文件定義函數還有許多的說明,暫時略去。。。


2.在線函數(Inline Function)
通常作為參數傳遞給另外一個函數。比如fminsearch,lsqcurvefit等函數需要以函數作為參數。
在線函數從字符串表達式創建函數,例如:
f=inline('x.^2','x');
創建了函數f(x)=x^2。要計算f(3),在工作區輸入f(3)即可。f([2 3 4])計算在x=2 3 4時的值
f=inline('x+y','x','y')
創建了二元函數f(x,y)=x+y,工作區輸入f(2,3)計算2+3,等同於feval_r(f,2,3)。


3.匿名函數(Anonymous Function)
匿名函數使用函數句柄來表示匿名函數,定義形式為
函數句柄=@(變量名) 函數表達式
例如:
f=@(x) x.^2
定義了函數f(x)=x^2,f(2)計算在x=2處的值。
匿名函數可以調用Matlab函數,也可以使用工作區中存在的變量,例如
a=2;
f=@(x) x.^2+a
f(2) %計算時引用了變量a
a=0;
f(2) %仍然引用的是a=2
匿名函數也可以由Matlab的內置函數或M文件函數創建,例如
f=@sin %f(x)=sin(x)
f(pi/2) %sin(pi/2)
functions(f) %查看函數信息
利用單元數組可以創建多個函數的句柄,例如
f={@sin @cos}
f{1}(pi/2) %計算sin(pi/2)
f{2}(pi) %計算cos(pi)
函數句柄的另一個重要特征是可以用來表示子函數、私有函數和嵌套函數。
Matlab 7以后,建議以匿名函數取代在線函數!!!
在創建匿名函數時,Matlab記錄了關於函數的信息,當使用句柄調用該函數的時候,Matlab不再進行搜索,而是立即執行該函數,極大提高了效率。


免責聲明!

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



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