MATLAB
MATLAB是matrix&laboratory兩個(gè)詞的組合,意為矩陣工廠(矩陣實(shí)驗(yàn)室)。是由美國(guó)mathworks公司發(fā)布的主要面對(duì)科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境。它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語(yǔ)言(如C、Fortran)的編輯模式,代表了當(dāng)今國(guó)際科學(xué)計(jì)算軟件的先進(jìn)水平。
MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語(yǔ)言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。
MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來(lái)解算問(wèn)題要比用C,F(xiàn)ORTRAN等語(yǔ)言完成相同的事情簡(jiǎn)捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點(diǎn),使MATLAB成為一個(gè)強(qiáng)大的數(shù)學(xué)軟件。在新的版本中也加入了對(duì)C,F(xiàn)ORTRAN,C++,JAVA的支持。
Matlab自定義函數(shù)的幾種方法
1、函數(shù)文件+調(diào)用命令文件:需單獨(dú)定義一個(gè)自定義函數(shù)的M文件;
2、函數(shù)文件+子函數(shù):定義一個(gè)具有多個(gè)自定義函數(shù)的M文件;
3、Inline:無(wú)需M文件,直接定義;
4、匿名函數(shù);
5、Syms+subs: 無(wú)需M文件,直接定義;
6、字符串+subs:無(wú)需M文件,直接定義;
7、直接通過(guò)@符號(hào)定義。
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.4f ’,t,y);
end
%自定義函數(shù)文件: mylfg.m
function y=mylfg(x) %注意:函數(shù)名(mylfg)必須與文件名(mylfg.m)一致
Y=x^(1/3);
注:這種方法要求自定義函數(shù)必須單獨(dú)寫(xiě)一個(gè)M文件,不能與調(diào)用的命令文件寫(xiě)在同一個(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.4f ’);
End
function y=lfg2(x)
Y= x^(1/3);
%注:自定義函數(shù)文件funtry2.m中可以定義多個(gè)子函數(shù)function。子函數(shù)lfg2只能被主函數(shù)和主函數(shù)中的其他子函數(shù)調(diào)用。
3、Inline:無(wú)需M文件,直接定義;
%inline命令用來(lái)定義一個(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)是,該方法只能對(duì)數(shù)值進(jìn)行代入,不支持符號(hào)代入,且對(duì)定義后的函數(shù)不能進(jìn)行求導(dǎo)等符號(hà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: 無(wú)需M文件,直接定義;
用syms定義一個(gè)符號(hào)表達(dá)式,用subs調(diào)用:
Syms f x %定義符號(hào)
f=1/(1+x^2); %定義符號(hào)表達(dá)式
subs(f, ‘x’, 代替x的數(shù)值或符號(hào))
注:對(duì)于在syms中已經(jīng)定義過(guò)的符號(hào)變量,在subs中進(jìn)行替代時(shí),單引號(hào)可以省略。但是,如果在syms后又被重新定義為其他類型,則必須加單引號(hào),否則不可替換。
這種函數(shù)定義方法的特點(diǎn)是,可以用符號(hào)進(jìn)行替換
Syms f x
f=1/(1+x^2);
subs(f, ‘x’,’y^2’)
ans=
1/(1+(y^2)^2)
注:該方法的缺點(diǎn)是,由于使用符號(hào)運(yùn)算內(nèi)核,運(yùn)算速度會(huì)大大降低。
6、字符串+subs:無(wú)需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)是,無(wú)法對(duì)字符進(jìn)行符號(hào)轉(zhuǎn)化。
當(dāng)所要替代的符號(hào)在調(diào)用前都已經(jīng)有了數(shù)值定義,則可以直接調(diào)用:subs(f)。例如:
f=’x^2*y’;
x=2;y=3;
subs(f)
ans=12
7、直接通過(guò)@符號(hào)定義。
示例如下:
》》 f=@(x,y)(x.^2-sin(y))
f =
@(x,y)(x.^2-sin(y))
》》 f(2,3)
ans =
3.8589
matlab怎么建立自定義函數(shù)
我們知道m(xù)atlab中有很多功能的函數(shù),可以直接調(diào)用。但在實(shí)際生活中,面對(duì)不同的問(wèn)題,有不同的算法,因此有時(shí)候我們需要自定義對(duì)應(yīng)于實(shí)際情況的函數(shù)。下面將以一個(gè)簡(jiǎn)單的例子介紹操作方法。
工具/原料
matlab軟件
方法/步驟
首先了解函數(shù)的基本結(jié)構(gòu)。如圖,函數(shù)文件一般包括三個(gè)部分,即函數(shù)名,注釋內(nèi)容和函數(shù)體。其中,中括號(hào)里面的內(nèi)容可以省略。
與建立M文件類似,在命令窗口中輸入edit。
如圖,編寫(xiě)函數(shù),需要注意函數(shù)命名規(guī)則,注釋部分可有可無(wú),用%開(kāi)始。
編寫(xiě)完成后保存文件,最好保存在當(dāng)前工作路徑的文件夾。
函數(shù)調(diào)用:
如圖,直接輸入函數(shù)名,形參,就能返回計(jì)算結(jié)果。
查看函數(shù)說(shuō)明:
和查看其它函數(shù)說(shuō)明一樣,輸入“help 函數(shù)名” 就能看到這個(gè)函數(shù)的注釋說(shuō)明。
評(píng)論
查看更多