m文件函數(m文件函數)
在線功能(在線功能)
匿名函數(匿名函數)
1.m文件功能
模型
函數c = myadd(a,b)
%妳可以在這裏寫函數的指令,從%開始。
%在工作區中,help myadd將在此處顯示說明。
c = a+b;
不需要%end%
函數的第壹行告訴Matlab這是壹個函數,a和b是輸入,c是輸出,myadd是函數名。m文件定義的函數必須保存為函數名。在上面的示例中,該函數應保存為myadd.m .要使用myadd函數,該函數必須位於Matlab的搜索路徑中。
通話模式:
在Matlab命令後輸入。
a = 1;b = 2;
c =年新增(a,b)
關於M文件的定義函數有很多解釋,暫時省略。。。
2.在線功能(在線功能)
通常作為參數傳遞給另壹個函數。fminsearch和lsqcurvefit等函數需要將函數作為參數。
在線函數通過字符串表達式創建函數,例如:
f=inline('x.^2','x');
函數f(x)= x ^ 2被創建。要計算f(3),只需在工作區中輸入f(3)。f(【2 3 4】)計算x=2 3 4時的值。
f =內聯(‘x+y’,‘x’,‘y’)
創建壹個二元函數f(x,y)= x+y,工作區輸入f(2,3)計算2+3,它相當於Fe val _ r(f,2,3)。
3.匿名函數(匿名函數)
匿名函數使用函數句柄來表示匿名函數,匿名函數的定義如下
函數句柄= @(變量名)函數表達式
例如:
x.^2
定義函數f(x)= x ^ 2,f(2)計算x=2處的值。
匿名函數可以調用Matlab函數或使用工作空間中存在的變量,例如
a = 2;
x.^2+a
f(2)%是參照變量a計算的。
a = 0;
f(2)%仍然指a=2。
匿名函數也可以由Matlab的內置函數或M文件函數創建,例如
f = @ sin % f(x)= sin(x)
f(π/2)% sin(π/2)
函數(f)%查看函數信息
使用單元數組,您可以創建多個函數的句柄,例如
f={@sin @cos}
f { 1 }(pi/2)%計算sin(pi/2)
f { 2 }(pi)%計算cos(pi)
函數句柄的另壹個重要特性是它們可以用來表示子函數、私有函數和嵌套函數。
Matlab 7以後建議用匿名函數代替在線函數!!!
在創建匿名函數時,Matlab記錄了關於該函數的信息。當用句柄調用函數時,Matlab停止搜索並立即執行函數,這大大提高了效率。
Matlab自定義函數的幾種方法
1,函數文件+調用命令文件:自定義函數的M文件需要單獨定義;
2.函數文件+子函數:用多個自定義函數定義壹個M文件;
3.Inline:直接定義,沒有M文件;
4.匿名函數;
5.Syms+subs:沒有M文件直接定義;
6.String +subs:直接定義,沒有M文件;
7、直接通過@符號定義。
1,函數文件+調用函數文件:定義多個m文件:
%調用函數文件:myfile.m
清楚的
色度控制中心
對於t=1:10
y = my LFG(t);
fprintf('m^(1/3)=%6.4f\n',t,y);
結束
%自定義函數文件:mylfg.m
函數y = mylfg(x)%註意:函數名(my LFG)必須與文件名(mylfg.m)壹致。
y=x^(1/3);
註意:該方法要求用戶定義的函數必須寫在單獨的M文件中,該文件不能與被調用的命令文件寫在同壹個M文件中。
2.函數文件+子函數:定義壹個具有多個子函數的M文件。
%命令文件:funtry2.m
函數【】=funtry2()
對於t=1:10
y = LFG 2(t)
fprintf('m^(1/3)=%6.4f\n');
結束
函數y = LFG 2(x)
y = x^(1/3);
%註意:在自定義函數文件funtry2.m中可以定義多個子函數。子函數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的數值運算內核,運算速度更快,程序效率更高。缺點是這種方法只能替換數值,但不支持符號替換,並且不能對定義的函數進行求導等符號運算。
示例:
清楚的
色度控制中心
f='x^2';
syms x g;
g=x^2;
h=inline('x^2','x');
4.匿名函數
使用matlab函數句柄運算符@,可以定義指向matlab內置函數和用戶自定義函數的函數句柄,函數句柄也可以像函數壹樣使用。例如:
& gt& gtx =-pi:0.1:pi;
& gt& gtfh={@cos,@ sin };
fh =
@cos @sin
& gt& gt繪圖(FH { 2 }(x))
5.Syms+subs:沒有M文件直接定義;
用syms定義壹個符號表達式,並用subs調用它:
符號f x%定義符號
f=1/(1+x^2);%定義壹個符號表達式
subs(f,‘x‘x‘,代替x的數值或符號)
註意:對於已經在syms中定義的符號變量,在subs中替換時可以省略單引號。但是,如果在syms之後將其重新定義為另壹種類型,則必須用單引號括起來,否則無法替換。
這種函數定義方法的特點是可以用符號代替。
符號f x
f=1/(1+x^2);
潛艇(f,'x','y^2')
ans=
1/(1+(y^2)^2)
註意:這種方法的缺點是由於使用了符號運算內核,運算速度會大大降低。
6.String +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
7、直接通過@符號定義。
例子如下:
& gt& gtf=@(x,y)(x.^2-sin(y)
f =
@(x,y)(x.^2-sin(y)
& gt& gtf(2,3)
ans =
3.8589