1、函數(shù)文件+調(diào)用命令文件:需單獨(dú)定義一個(gè)自定義函數(shù)的M文件;
2、函數(shù)文件+子函數(shù):定義一個(gè)具有多個(gè)自定義函數(shù)的M文件;
3、Inline:無需M文件,直接定義;
4、匿名函數(shù);
5、Syms+subs: 無需M文件,直接定義;
6、字符串+subs:無需M文件,直接定義;
7、直接通過@符號定義.
1、函數(shù)文件+調(diào)用函數(shù)文件:定義多個(gè)M文件:
% 調(diào)用函數(shù)文件:myfile.m
clear
clc
for t=1:10
y=mylfg(t);
fprintf(‘M^(1/3)=%6.4fn’,t,y);
end
%自定義函數(shù)文件: mylfg.m
function y=mylfg(x)%注意:函數(shù)名(mylfg)必須與文件名(mylfg.m)一致
Y=x^(1/3);
注:這種方法要求自定義函數(shù)必須單獨(dú)寫一個(gè)M文件,不能與調(diào)用的命令文件寫在同一個(gè)M文件中。
2、函數(shù)文件+子函數(shù):定義一個(gè)具有多個(gè)子函數(shù)的M文件
%命令文件:funtry2.m
function []=funtry2()
for t=1:10
y=lfg2(t)
fprintf(‘M^(1/3)=%6.4fn’);
End
function y=lfg2(x)
Y= x^(1/3);
%注:自定義函數(shù)文件funtry2.m中可以定義多個(gè)子函數(shù)function。子函數(shù)lfg2只能被主函數(shù)和主函數(shù)中的其他子函數(shù)調(diào)用。
3、Inline:無需M文件,直接定義;
%inline命令用來定義一個(gè)內(nèi)聯(lián)函數(shù):f=inline(‘函數(shù)表達(dá)式’, ‘變量1’,’變量2’,……)。
調(diào)用方式:y=f(數(shù)值列表) %注意:代入的數(shù)值列表順序應(yīng)與inline()定義的變量名順序一致。
例如:
f=inline(‘x^2+y’,’x’,’y’);
z=f(2,3)
Ans=7
注:這種函數(shù)定義方式是將它作為一個(gè)內(nèi)部函數(shù)調(diào)用。特點(diǎn)是,它是基于Matlab的數(shù)值運(yùn)算內(nèi)核的,所以它的運(yùn)算速度較快,程序效率更高。缺點(diǎn)是,該方法只能對數(shù)值進(jìn)行代入,不支持符號代入,且對定義后的函數(shù)不能進(jìn)行求導(dǎo)等符號運(yùn)算。
例:
Clear
Clc
f=’x^2’;
Syms x g;
g=x^2;
h=inline(‘x^2’,’x’);
4.匿名函數(shù)
使用matlab函數(shù)句柄操作符@,可以定義指向matlab內(nèi)置函數(shù)和用戶自定義函數(shù)的函數(shù)句柄,函數(shù)句柄也可以像函數(shù)一樣的使用。例如:
>>x=-pi:0.1:pi;
>> fh={@cos,@sin};
fh =
@cos@sin
>>plot(fh{2}(x))
5、Syms+subs:無需M文件,直接定義;
用syms定義一個(gè)符號表達(dá)式,用subs調(diào)用:
Syms f x %定義符號
f=1/(1+x^2); %定義符號表達(dá)式
subs(f, ‘x’, 代替x的數(shù)值或符號)
注:對于在syms中已經(jīng)定義過的符號變量,在subs中進(jìn)行替代時(shí),單引號可以省略。但是,如果在syms后又被重新定義為其他類型,則必須加單引號,否則不可替換。
這種函數(shù)定義方法的特點(diǎn)是,可以用符號進(jìn)行替換
Syms f x
f=1/(1+x^2);
subs(f, ‘x’,’y^2’)
ans=
1/(1+(y^2)^2)
注:該方法的缺點(diǎn)是,由于使用符號運(yùn)算內(nèi)核,運(yùn)算速度會大大降低。
6、字符串+subs:無需M文件,直接定義;
直接定義一個(gè)字符串,用subs命令調(diào)用。例如:
f=’1/(1+x^2)’ %定義字符串
z=subs(f,’x’,2)
g=subs(f,’x’,’y^2’)
注:優(yōu)點(diǎn)是,占用內(nèi)存最少,定義格式方面自由。
缺點(diǎn)是,無法對字符進(jìn)行符號轉(zhuǎn)化。
當(dāng)所要替代的符號在調(diào)用前都已經(jīng)有了數(shù)值定義,則可以直接調(diào)用: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
愛華網(wǎng)



