n 1、函數文件+調用命令文件:需單獨定義一個自定義函數的M文件;
n 2、函數文件+子函數:定義一個具有多個自定義函數的M文件;
n 3、Inline:無需M文件,直接定義;
n 4、Syms+subs: 無需M文件,直接定義;
n 5、字符串+subs:無需M文件,直接定義.
1、函數文件+調用函數文件:定義多個M文件:
% 調用函數文件:myfile.m
clear
clc
for t=1:10
y=mylfg(t);
fprintf(‘%4d^(1/3)=%6.4f\n’,t,y);
end
%自定義函數文件: mylfg.m
function y=mylfg(x) %注意:函數名(mylfg)必須與文件名(mylfg.m)一致
Y=x^(1/3);
注:這種方法要求自定義函數必須單獨寫一個M文件,不能與調用的命令文件寫在同一個M文件中。
2、函數文件+子函數:定義一個具有多個子函數的M文件
%命令文件:funtry2.m
function []=funtry2()
for t=1:10
y=lfg2(t)
fprintf(‘%4d^(1/3)=%6.4f\n’);
End
function y=lfg2(x)
Y= x^(1/3);
%注:自定義函數文件funtry2.m中可以定義多個子函數function。子函數lfg2只能被主函數和主函數中的其他子函數調用。
3、Inline:無需M文件,直接定義;
%inline命令用來定義一個內聯函數:f=inline(‘函數表達式’, ‘變量1’,’變量2’,……)。
調用方式:y=f(數值列表) %注意:代入的數值列表順序應與inline()定義的變量名順序一致。
例如:
f=inline(‘x^2+y’,’x’,’y’);
z=f(2,3)
Ans=7
注:這種函數定義方式是將它作為一個內部函數調用。特點是,它是基於Matlab的數值運算內核的,所以它的運算速度較快,程序效率更高。缺點是,該方法只能對數值進行代入,不支持符號代入,且對定義后的函數不能進行求導等符號運算。
例:
Clear
Clc
f=’x^2’;
Syms x g;
g=x^2;
h=inline(‘x^2’,’x’);
4、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)
注:該方法的缺點是,由於使用符號運算內核,運算速度會大大降低。
5、字符串+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