版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Matlab應(yīng)用與仿真劉子龍武漢理工大學物理系1第一部分:Matlab簡介MATLAB是MatrixLaboratory(矩陣實驗室)的簡稱,是美國MathWorks公司(/)出品的商業(yè)數(shù)學軟件,是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級計算語言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。
21.1Matlab的發(fā)展歷程
20世紀70年代中期,美國的CleveMoler博士開發(fā)了FORTRAN語言的兩個子程序庫——LINPACK和EISPACK,分別用于解線性方程和特征方程
,它們代表了當時矩陣計算的最高水平
20世紀70年代后期,CleveMoler博士在講授線性代數(shù)課程時想教學生使用LINPACK和EISPACK程序庫,當他發(fā)現(xiàn)學生花大量時間用于編寫接口程序而背離開課的目的時,便著手利用FORTRAN語言編寫了一套方便調(diào)用LINPACK和EISPACK的接口程序,并將其命名為MATLAB(矩陣實驗室)。3
1983年-1984年,CleveMoler和JohnLittle(MathWorks公司總裁)等合作用C語言開發(fā)了第二代專業(yè)版MATLAB。并于1984年成立MathWorks公司,正式將MATLAB推向市場,這就是MATLAB的最初版本1.0。從這一代起MATLAB的核心就不再使用FORTRAN語言而是一直采用C語言編寫。1.1Matlab的發(fā)展歷程到20世紀90年代,MATLAB已成為國際控制界的標準計算軟件?,F(xiàn)在MathWorks公司一般每年發(fā)布兩個版本,上半年a版本,下半年b版本。
4
MATLAB的版本一覽1.1Matlab的發(fā)展歷程版本編號建造編號發(fā)布時間?MATLAB8.0?R2010a?2010.3.5
MATLAB7.9R2009b2009.9MATLAB7.8R2009a2009.3MATLAB7.7R2008b2008.10MATLAB7.6R2008a2008.3MATLAB7.5R2007b2007.9MATLAB7.4R2007a2007.35版本編號建造編號發(fā)布時間MATLAB7.3R2006b2006MATLAB7.2R2006a2006MATLAB7.1R14SP32005MATLAB7.0.4R14SP22005MATLAB7.0.1R14SP12004MATLAB7.0R142004MATLAB6.5.2R13SP22003
MATLAB的版本一覽(續(xù))1.1Matlab的發(fā)展歷程6版本編號建造編號發(fā)布時間MATLAB6.5.1R13SP12003MATLAB6.5R132002MATLAB6.1R12.12001MATLAB6.0R122000MATLAB5.3.1R11.11999MATLAB5.3R111999MATLAB5.2.1R10.11998
MATLAB的版本一覽(續(xù))1.1Matlab的發(fā)展歷程7版本編號建造編號發(fā)布時間MATLAB5.2R101998MATLAB5.1.1R9.11997MATLAB5.1R91997MATLAB5.0R81996MATLAB4.2cR71994
MATLAB的版本一覽(續(xù))1.1Matlab的發(fā)展歷程8版本編號建造編號發(fā)布時間MATLAB4
1992MATLAB3.5
1990MATLAB3
1987MATALB2
1986MATLAB1.0
1984
MATLAB的版本一覽(續(xù))1.1Matlab的發(fā)展歷程91.2Matlab的應(yīng)用領(lǐng)域MATLAB對許多專門的領(lǐng)域都開發(fā)了功能強大的模塊集(BLOCKSET)和工具箱(TOOLBOX)。每一個工具箱(MATLAB函數(shù)的子程序庫)都是由特定領(lǐng)域的專家開發(fā)的,用戶可以直接使用工具箱來進行相關(guān)的設(shè)計與研究而不需要自己編寫代碼。
MATLAB的工具箱主要包括:優(yōu)化設(shè)計、圖像與數(shù)字信號處理、通信、控制系統(tǒng)、神經(jīng)網(wǎng)絡(luò)、模糊邏輯、小波分析、系統(tǒng)仿真、計算生物學和計算金融學等方面的應(yīng)用。
下面列舉MATLAB的部分工具箱以供一覽:10數(shù)學與優(yōu)化OptimizationToolbox
(優(yōu)化工具箱)GlobalOptimizationToolbox
(全局優(yōu)化工具箱)SymbolicMathToolbox(符號工具箱)PartialDifferentialEquationToolbox(偏微分方程工具箱)
統(tǒng)計與數(shù)據(jù)分析StatisticsToolbox(統(tǒng)計工具箱)NeuralNetworkToolbox
(神經(jīng)網(wǎng)絡(luò)工具箱)Matlab的部分工具箱一覽:11
控制系統(tǒng)設(shè)計與分析ControlSystemToolbox(控制系統(tǒng)工具箱)SystemIdentificationToolbox(系統(tǒng)識別工具箱)FuzzyLogicToolbox(模糊邏輯工具箱)RobustControlToolbox(魯棒控制工具箱)
信號處理與通信SignalProcessingToolbox(信號處理工具箱
)CommunicationsToolbox(通信工具箱)FilterDesignToolbox(濾波器設(shè)計工具箱)WaveletToolbox
(小波分析工具箱)Matlab的部分工具箱一覽:(續(xù))12Matlab的部分工具箱一覽:(續(xù))圖像處理ImageProcessingToolbox
(圖像處理工具箱)VideoandImageProcessingBlockset
(視頻和圖像處理模塊)ImageAcquisitionToolbox(圖像采集工具箱)MappingToolbox(繪圖工具箱)計算金融FinancialToolbox(金融工具箱)EconometricsToolbox
(經(jīng)濟學工具箱)13圖片來源:/14第二部分:Matlab基礎(chǔ)及入門2.1MATLAB的Desktop操作桌面簡介工作空間管理命令:who,whos,clear,
save,load工作空間是指運行Maltlab期間生成的所有變量構(gòu)成的空間。由Matlab命令行或m文件輸入的命令和創(chuàng)建的所有變量,都會駐留在Matlab的工作空間,可在任何需要的時候調(diào)用。MATLAB的工作空間(Workspace)下一張幻燈片whos--列出工作空間的全部變量詳細內(nèi)容;clear—刪除內(nèi)存中的變量和函數(shù);save,load—存儲和加載變量152.1MATLAB的Desktop操作桌面命令窗口歷史命令窗口當前目錄工作空間內(nèi)存變量命令提示符162.2簡單的范例輸入:sqrt(2*pi)+3/2-cos(2)結(jié)果:ans=4.4228,ans用于顯示結(jié)果的默認變量名矩陣(‘[]’表示)的輸入,各元素以空格或逗號分隔,分號是換行符矩陣乘法A*B“演算紙式”的算法語言!172.3在線幫助>>
help
sqrthelp+命令名或函數(shù)名(或F1鍵)更詳細的幫助信息18變量名稱是由英文字母、數(shù)字或下劃綫所組成開頭的第一個字母必須是英文字母
(切忌數(shù)字開頭)名稱長度不能超過32個字母會區(qū)分變數(shù)的大小寫
(同C語言)變量不必聲明便可直接使用
(不同于C語言)2.4變量的命名規(guī)則關(guān)于變量的數(shù)據(jù)類型:默認情況下,Matlab將所有數(shù)值型變量默認為雙精度類型,無論輸入的是整數(shù)還是實數(shù)。192.5Matlab的保留變量eps
浮點運算誤差=2.2204*10-16(最小數(shù))j,i
純虛數(shù)Inf
無窮大NaN
非數(shù)(NotaNumber),如0/0pi
圓周率ans
用于返回結(jié)果的缺省變量名nargin
所用函數(shù)的輸入變量數(shù)目nargout
所用函數(shù)的輸出變量數(shù)目變量命名時須避免使用保留變量!202.6Matlab的數(shù)據(jù)類型Matlab中任何數(shù)據(jù)都以數(shù)組的形式存在,數(shù)組維數(shù)可以是零維(標量),一維、二維、多維若數(shù)組只有一維,稱之為向量(vector)向量可再細分為行向量(rowvector)與列向量(columnvector)數(shù)組若是二維,則稱之為矩陣(matrix)
實際在Matlab中,列向量被當作只有1列的矩陣;行向量當作只有1行的矩陣;標量則是看作只有1行1列的矩陣。21數(shù)組字串數(shù)值元胞結(jié)構(gòu)體函數(shù)句柄n-bit整數(shù)int8,uint8int16,uint16int32,uint32int64,uint64singledouble一般數(shù)值2.6Matlab的數(shù)據(jù)類型默認例如:>>A=int8(12)≌float22
在計算機內(nèi),雙精度數(shù)需要8個字節(jié)(Byte)來存儲;至于雙精度的復數(shù),則占16個字節(jié)(實部和虛部);單精度的實數(shù)占4個字節(jié);整數(shù)類:int8占1字節(jié),int16占2字節(jié),int32占4字節(jié),int64占8字節(jié);對于字符串,每個字符占2個字節(jié)。>>A=2;B=rand(1000);C=i*B;>>whos
%
查詢內(nèi)存變量NameSizeBytesClassA1x18doublearrayB1000x10008000000doublearrayC1000x100016000000doublearray(complex)Grandtotalis2000001elementsusing24000008bytes分號的另一含義:一個命令行的末尾如果是分號,則結(jié)果不顯示在屏幕,否則將結(jié)果輸出到屏幕。23
2.6.1
一維數(shù)值型數(shù)組Matlab的向量是以一維數(shù)組來表示行向量里,元素與元素之間用空格鍵或逗號隔開列向量以分號隔開(‘換行’)>>A=[1,2,3]A=123>>A=[1;2;3]A=123分號的另一含義:一個命令行的末尾如果是分號,則結(jié)果不顯示在屏幕,否則將結(jié)果輸出到屏幕。24構(gòu)建一維數(shù)組的方法
[]直接輸入(英文狀態(tài))>>A=[1,2,3]A=123>>A=[1;2;3]A=123使用冒號“:”創(chuàng)建(格式a:increment:b)>>x=0:0.1:2*pi;%建立從0到2
的行向量,%元素增量0.1>>y=sin(x);%元素個數(shù)和x相同的行向量>>plot(x,y);%二維繪圖函數(shù),畫sin函數(shù)圖像行向量列向量“%”后面的所有文字都是注釋!25sin(x)的函數(shù)圖像圖形窗口白色區(qū)域代表坐標軸內(nèi)的區(qū)域所有的繪圖命令(比如plot)執(zhí)行后都會自動彈出一個圖形窗口顯示繪制的圖形26使用linspace(a,b,n)命令(線性采樣)創(chuàng)建>>x=linspace(0,2*pi,100);%建立從0到2
的%行向量,元素數(shù)目100>>y=sin(x);>>plot(x,y);>>n=length(x)%查詢向量t的長度n=100>>x=x
;%“
”共軛轉(zhuǎn)置符號,行向量與列向量%相互轉(zhuǎn)換(注意區(qū)別“.’”
!)27基本的向量處理函數(shù)28
2.6.2
二維數(shù)值型數(shù)組稱二維數(shù)組為矩陣(matrix)一個m×n的矩陣代表矩陣具有m個行n個列要建立矩陣,同一行的元素用空格或逗號隔開,行與行之間用分號隔開29構(gòu)建二維數(shù)組(矩陣)的方法使用[]直接輸入利用向量或矩陣的組合>>a=1:3;b=2:4;c=[a,b],d=[a;b]c=123234d=123234元素的增量=130第4列第1行第2行第3行第1列第2列第3列第1維度第2維度>>cat(1,a,b);%沿列維創(chuàng)建,相當于[a;b]>>cat(2,a,b);%沿行維創(chuàng)建,相當于[a,b]利用命令cat(dim,A,B)Matlab的運算按列優(yōu)先!(與C語言不同)31利用Matlab提供的函數(shù)建立32(隨機數(shù))利用Matlab提供的函數(shù)建立(續(xù))33>>zeros(2,3)ans=000000>>eye(3)ans=100010001>>diag(1:3)ans=100020003>>ones(2,3)ans=111111利用Matlab提供的函數(shù)建立矩陣(續(xù))34利用Matlab提供的函數(shù)建立矩陣(續(xù))>>rand(3)%0~1間的隨機矩陣ans=0.95010.48600.45650.23110.89130.01850.60680.76210.8214>>randn(2,3)%正態(tài)分布的隨機矩陣ans=-0.43260.1253-1.1465-1.66560.28771.190935查詢陣列(數(shù)組)維度,以及陣列元素個數(shù)的函數(shù)>>[t,c]=size(rand(2,3))t=2c=3%t返回行數(shù),c返回列數(shù)36第1維度第1行第2行第3行第1頁第2頁第2維度第3維度
2.6.3
多維數(shù)組對於三維陣來說,需要列、行與頁(page)三個維度來描述37
建立三維數(shù)組,可針對每一頁分別建立二維數(shù)組
38
2.6.4
數(shù)組元素的訪問通過元素的下標來訪問:
A(i,j)訪問矩陣A的第i行j列的元素
A(i)訪問矩陣A的第i個元素A(1,1)A(2,1)A(1,2)A(2,2)A(1)A(2)A(3,1)A(3,2)A(3)A(4)A(5)A(6)按列優(yōu)先注意:與C語言不同,Matlab中數(shù)組元素的下標從1開始計算而不是0!39通過冒號“:”訪問:
A(i:k,j)訪問矩陣A的第j列的i到k個元素
A(:,j)訪問矩陣A的第j列元素
A(i,:)訪問矩陣A的第i行元素>>A=diag(1:3);>>a=A(2,2),b=A(5)a=2b=2>>c=A(:,3)c=00340矩陣加、減、乘、除、求冪、轉(zhuǎn)置
2.6.5
矩陣的運算41矩陣的基本運算函數(shù)42矩陣的左除“\”與右除“/”設(shè)若要求解向量X,則上式可以寫為
X=inv(A)*B,或用A來左除B,即>>
X=A\B同樣地若則寫為
X=B*inv(A),或用B
右除A,即>>
X=B\A43A.*B對應(yīng)的元素之間的乘積元素與元素的運算—“.”符號若>>A*Bans=22281312>>A.*Bans=6812644元素與元素的運算—“.”符號>>t=0:0.01:pi;y=sin(t.^3);plot(t,y)在[0,
]內(nèi),繪制函數(shù)sin(t3)的圖像45
2.6.6
字符型數(shù)組在Matlab里,字符須放在單引號對中。>>c=‘Hello!’c=Hello!創(chuàng)建字符數(shù)組>>str=‘Howareyou!’%使用單引號直接建立str=Howareyou!>>size(str)%查詢字符數(shù)組(字串)的大小ans=112%1x12的行向量46創(chuàng)建字符數(shù)組>>month=['April';'May';'June']???Errorusing==>vertcatAllrowsinthebracketedexpressionmusthavethesamenumberofcolumns.>>month=['April';'May
';'June
']month=AprilMay
June創(chuàng)建二維字符數(shù)組時,每行字串的長度須相等,如果不等,須補足空格,否則出錯。47字符與數(shù)值之間的轉(zhuǎn)換48>>a=str2num('123.456')a=123.456>>b=num2str(123.456)b=
123.456>>class(a)%查詢變量的類型ans=double>>class(b)ans=char49
2.6.7
元胞數(shù)組(CellArray)元胞數(shù)組是Matlab里的一類特殊的數(shù)組。元胞數(shù)組的每一個元素(cell)可以是不同類型的矩陣、向量、標量、多維數(shù)組或結(jié)構(gòu)體。構(gòu)建元胞數(shù)組方式一>>A=cell(2,2);
%用cell命令預定義一個2x2的元胞數(shù)組>>A(1,1)={rand(2,3)};
%{}是元胞數(shù)組的標志>>A(1,2)={‘HelloWorld!’};>>A(2,1)={12+2i};50>>A(2,2)={1:-1:-9};>>cellplot(A)%畫元胞數(shù)組的結(jié)構(gòu)圖51構(gòu)建元胞數(shù)組方式二>>A{1,1}=rand(2,3);
>>A{1,2}=‘HelloWorld!’;>>A{2,1}=12+2i;>>A{2,2}=1:-1:-9;>>A={rand(2,3),‘HelloWorld!’;…12+2i,1:-1:-9};%”…”續(xù)行符,變量名不能分開,注釋行不能續(xù)行或者52元胞數(shù)組元素的訪問方式A(1,1)A(1,2)A(2,1)A(2,2)A(1)A(2)A(3)A(4)基本單元(cell)的編址53>>c=A(2,2)
%對基本單元(cell)的訪問,相當于A(4)c=[1x11double]>>d=A{2,2}
%提取單元里的內(nèi)容d=10-1-2-3-4-5-6-7-8-9>>class(c)ans=cell>>class(d)ans=double54
2.6.8
結(jié)構(gòu)體數(shù)組(StuctureArray)結(jié)構(gòu)體數(shù)組的基本單元(元素)是結(jié)構(gòu)體,結(jié)構(gòu)體只有在劃分“域(field)”之后才能使用,數(shù)據(jù)只能存放在結(jié)構(gòu)體的域中,結(jié)構(gòu)體的域可以存放任何類型的數(shù)據(jù)。結(jié)構(gòu)體域的構(gòu)成:結(jié)構(gòu)體名.域名55創(chuàng)建結(jié)構(gòu)體方式1—直接創(chuàng)建>>student.name
='Tom';>>student.id
='u80579';>>student.score
=[776988];>>>>student
%顯示結(jié)構(gòu)體student=name:'Tom'
id:'u80579'
score:[776988]創(chuàng)建了一個名為student的單結(jié)構(gòu)體,該結(jié)構(gòu)體有3個域:name、id、score56>>
student(2,3).name='Jerry';>>student(2,3).id='u80161';>>student(2,3).score=[897890];>>>>student
%顯示結(jié)構(gòu)體student=2x3
structarraywithfields:nameidscore創(chuàng)建一個名為student的2x3的結(jié)構(gòu)體,該結(jié)構(gòu)體有3個域:name、id、score上述命令在創(chuàng)建2x3結(jié)構(gòu)體的同時,也給數(shù)組的第2行3列的元素賦值了。57Structurearray:StudentnameidscorenameidscoreJerryu80161897090nameidscorenameidscorenameidscore結(jié)構(gòu)體58創(chuàng)建結(jié)構(gòu)體方式2—struct命令格式:S=struct(‘field1’,value1,‘field2’,value2,…)>>DATA(2,3)=struct('name',[],
…
'id',[],
'score',[])>>%結(jié)構(gòu)體域的值為空>>DATA=2x3structarraywithfields:
name
id
score59結(jié)構(gòu)體數(shù)組元素的訪問基本單元的訪問:被標識的結(jié)構(gòu)體名>>student(2,3)%等價于student(6)
ans=name:
'Jerry'
id:
'u80161'
score:
[897890]60具體內(nèi)容的訪問:帶域名的標識結(jié)構(gòu)體名>>str=student(2,3).namestr=
Jerry>>%對結(jié)構(gòu)體DATA的域賦值>>DATA(1,1).name='zhang‘;>>DATA(1,1).id=‘2000185‘;>>DATA(1,1).score=[887992];612.7使用M文件—Matlab編程(I)M文件(程序文件)是指Matlab自動生成的后綴名為.m的文件,分為腳本(Script)M文件和函數(shù)M文件。2.7.1腳本M文件腳本M文件實際上是用戶按照自己意圖編寫的Matlab命令集合(批處理文件),腳本文件運行后,文件中使用的所有變量都駐留在Matlab的工作空間(workspace)中62建立腳本M文件方法1.在Matlab桌面點擊FileNewM-File,即可打開M文件編輯器,編輯M文件。63建立腳本M文件方法2.在命令窗口鍵入命令edit,可打開M文件編輯器,編輯M文件。M文件編輯區(qū)>>edit64%
script1.m,
M腳本練習-繪制三維函數(shù)圖clear
%清除內(nèi)存中的所有變量
x=linspace(-6,6,36);
y=linspace(-6,6,36);
%創(chuàng)建行向量
[xxyy]=meshgrid(x,y);
%在x、y的矩形區(qū)
%內(nèi)劃分網(wǎng)格,輸出格點坐標
zz=yy./(xx.^2+yy.^2+1);surf(xx,yy,zz);
%繪制三維曲面圖命令axistight
%把數(shù)據(jù)范圍設(shè)為坐標范圍,使圖形和坐標軸緊湊M腳本文件的例子:畫三維函數(shù)z=y/(x2+y2+1)圖“記住隨時使用help”65輸入并儲存(文件名不能以數(shù)字開頭)好之后,命令窗口鍵入腳本文件名
script1
即可執(zhí)行該M文件?;蛘唿c擊編輯器上的“執(zhí)行”圖標。66雙擊變量名可查看變量值腳本文件運行后,文件中所有變量都駐留在工作空間中67數(shù)組編輯器——數(shù)組zz的元素值利用數(shù)組編輯器,可以創(chuàng)建一個數(shù)組并給數(shù)組元素賦值。68>>lv.^2ans=011100111000692.7.2函數(shù)M文件函數(shù)M文件和腳本M文件都是后綴為.m的Matlab文件,不同之處是:
1.函數(shù)可以有輸入?yún)?shù),也可以把運算結(jié)果傳回工作區(qū)(輸出變量),而腳本文件不行。
2.
函數(shù)M文件內(nèi)的變量不出現(xiàn)在Matlab的工作空間,它有自己專有的函數(shù)空間,它與工作空間的通信只是通過函數(shù)的輸入和輸出變量。M函數(shù)外部(輸出)外部輸入“外部不可見”-“黑盒”70函數(shù)M文件的基本結(jié)構(gòu)——H1行——注釋區(qū)function
輸出變量=函數(shù)名(參數(shù)1,參數(shù)2,...)——函數(shù)定義行%幫助行(H1行),此行可簡述函數(shù)的功用。%此區(qū)是函數(shù)說明文字,可用于注解函數(shù)用法、%注意事項等。函數(shù)主體71Help命令顯示內(nèi)容72簡單的范例函數(shù)myfunc1可接收兩個輸入?yún)?shù),并返回兩者的和function
total=myfunc1(x,y)%MYFUNC1sumoftwonumbersorvectors.%MYFUNC1(X,Y)computesX+Yandreturns%theresult.%
XandYcanbescalarsorvectors.total=x+y;
%函數(shù)體編輯后保存文件時,文件名和函數(shù)名必須相同。73補充說明:
函數(shù)可以沒有輸出變量,也可以多于1個輸出變量。當有一個以上的輸出時,輸出變量包含在括號[]內(nèi),如[V,D]=eig(A);[t,c]=size(A)
函數(shù)外部不能調(diào)用函數(shù)內(nèi)的變量,函數(shù)內(nèi)也不能調(diào)用函數(shù)外部的變量。函數(shù)與外界唯一的聯(lián)系就是輸入和輸出,函數(shù)內(nèi)對外界是“不可見的”。函數(shù)的參數(shù)無需定義類型(與c語言不同)。74function
total=myfunc1(x,y)輸出變量(返回值)函數(shù)名輸入?yún)?shù)>>myfunc1(3,5)ans=8>>help
myfunc1MYFUNC1sumoftwonumbersorvectors.MYFUNC1(X,Y)computesX+Yandreturnstheresult.XandYcanbescalarsorvectors.帶參數(shù)運行752.7.3子函數(shù)同一個M文件里可以撰寫多個函數(shù);一個M文件里只能有一個主函數(shù),其他的是子函數(shù);子函數(shù)只能被同一文件里的主函數(shù)調(diào)用,或其他的子函數(shù)調(diào)用子函數(shù)的撰寫格式和主函數(shù)一樣保存文件時所用名字和主函數(shù)相同76function
myfunc2(v)%主函數(shù)subf(v);fprintf('Endofmainfunction\n');%格式化輸出function
subf(n)%子函數(shù)fprintf('sum(n)=%g\n',sum(n))fprintf('prod(n)=%g\n',prod(n))>>myfunc2([12345])sum(n)=15prod(n)=120Endofmainfunction>>subf([12345])???Undefinedcommand/function'subf'.772.7.4M文件的調(diào)試點擊此處可設(shè)置暫停點程序當前執(zhí)行的位置執(zhí)行下一步(step)跳到子程序執(zhí)行(stepin)跳出子程序執(zhí)行下一步(stepout)M函數(shù)78當程序執(zhí)行到斷點處,會在命令窗口顯示“K>>”,此時可以檢查和修改(函數(shù))工作空間的變量值。鍵入return后,可繼續(xù)運行到程序結(jié)束。792.8匿名函數(shù)
匿名函數(shù)(anonymousfunctions)是一個可以在Matlab的命令窗口里直接定義的函數(shù),而不用把函數(shù)寫在M文件里。fname=@(arg_list)expression函數(shù)名輸入?yún)?shù)列表函數(shù)內(nèi)容匿名函數(shù)的定義80>>
f=@(x)sin(2*x).*exp(-x/2);>>
f(2.3)ans=
0.0748>>fplot(f,[0,2*pi])范例>>help
fplotFPLOTPlotfunctionspecifiedbystring.
FPLOT(FUN,LIMS)plotsthefunctionFUNbetweenthex-axislimitsspecifiedbyLIMS=[XMINXMAX].UsingLIMS=[XMINXMAXYMINYMAX]alsocontrolsthey-axislimits.…81輸出圖形822.9流程控制結(jié)構(gòu)—Matlab編程(II)循環(huán)語句、條件語句、開關(guān)語句的結(jié)構(gòu)for…endwhile…end循環(huán)結(jié)構(gòu)2.9.1循環(huán)結(jié)構(gòu)83
FOR循環(huán)的語法for
循環(huán)變量=向量循環(huán)主體end將循環(huán)變量依次設(shè)定為向量里的每一個元素值,然后執(zhí)行循環(huán)主體for
循環(huán)變量=矩陣循環(huán)主體end將循環(huán)變量依次設(shè)定為矩陣的每一列,然后執(zhí)行循環(huán)主體格式說明84%script2.mtotal=0;fornum=2:100
%
向量,增量1
if
isprime(num)total=total+num;
endendfprintf('sum=%d\n',total)>>script2sum=1060例1:利用for循環(huán)計算2~100之間所有質(zhì)數(shù)的和isprime
內(nèi)建函數(shù),判斷一個數(shù)是否質(zhì)數(shù)85%script3.mfori=[12;34]
%
矩陣
i
%
在命令窗口顯示變量i的值end>>script3i=13i=24例286
WHILE循環(huán)的語法當無法事先知道循環(huán)該執(zhí)行多少次時,可以考慮使用while循環(huán)。其語法如下:while
表達式循環(huán)主體end當表達式值為真時,執(zhí)行循環(huán)主體,否則不執(zhí)行。格式說明87兩類表達式:
關(guān)系表達式:通過關(guān)系運算符聯(lián)系的表達式。常用的關(guān)系運算符有<小于;<=小于等于>大于;>=大于等于==等于;~=不等于
邏輯表達式:通過邏輯運算符聯(lián)系的表達式。常用的邏輯運算符有
&&邏輯與||邏輯或~邏輯非88%script4.mtotal=0;num=2;whilenum<=100ifisprime(num)total=total+num;endnum=num+1;endfprintf('sum=%d\n',total)>>script4sum=1060例子89使用break和continue命令若要中斷循環(huán)的執(zhí)行,可使用break與continue命令(以for循環(huán)為例):for
循環(huán)變量=向量循環(huán)主體1break;
循環(huán)主體2end循環(huán)體外語句立即跳離循環(huán),執(zhí)行循環(huán)體后面的語句格式說明90for
循環(huán)變量=向量循環(huán)主體1continue;
循環(huán)主體2end循環(huán)體外語句立即停止剩余的循環(huán)主體,跳轉(zhuǎn)到循環(huán)開始處執(zhí)行下一次循環(huán)格式說明912.9.2if-else-end條件語句有3種常用的使用方式:if
表達式敘述主體end若表達式的值為真,則執(zhí)行敘述主體if
表達式敘述主體1else
敘述主體2end若表達式的值為真,則執(zhí)行敘述主體1,否則執(zhí)行敘述主體2格式說明92if
表達式1敘述主體1elseif表達式2
敘述主體2...else
敘述主體nend若所有表達式的值都不成立,則執(zhí)行敘述主體n格式說明例子:參見例script4.m932.9.3switch-case開關(guān)結(jié)構(gòu)switch
表達式case值1
敘述主體1case值2
敘述主體2...otherwise
敘述主體nend表達式為一標量或字串;格式說明當表達式的值=值1時,執(zhí)行主體1,然后跳出該結(jié)構(gòu)當表達式的值=值2時,執(zhí)行主體2,然后跳出該結(jié)構(gòu)當表達式的值不等于前面所有的檢測值時,執(zhí)行主體n...94若case后面的檢測值不止一個時,可用大括號將它們括起來,如:functionmyfunc3(method)switchmethod
%method為字串
case
{'linear','bilinear'}
disp('linear/bilinearmethod')
case'cubic'
disp(‘Cubicmethod’)%屏幕顯示命令
otherwise
disp('Unknownmethod')end>>myfunc3('bilinear')linear/bilinearmethod>>myfunc3('newton')Unknownmethod952.10數(shù)據(jù)可視化MATLAB不僅在數(shù)值計算方面獨占鰲頭,而且在數(shù)據(jù)可視化方面也是功能強大。MATLAB可以給出數(shù)據(jù)的二維、三維甚至四維的圖形表現(xiàn)。通過對圖形的線型、立面、色彩、渲染、光線、視角等的控制,可以把數(shù)據(jù)的特征表現(xiàn)的淋漓盡致。下面介紹幾個常用的二維、三維繪圖函數(shù)。962.10.1二維圖形在二維曲線圖的繪制命令中,最重要、最基本的命令就是plot,其常用的調(diào)用格式如下:1.plot(X,Y,
s
)若X、Y為同維向量,則分別以X、Y中的元素為橫、縱坐標繪制曲線;若X為向量,Y是有一維和X等維的矩陣,則繪制多個不同色彩的曲線,曲線數(shù)等于Y的另一維;若X為矩陣,Y為向量,情況和上相同;若X,Y為同維矩陣,則以X,Y對應(yīng)的列元素為橫、縱坐標繪制曲線族,曲線條數(shù)等于矩陣的列數(shù);s是字串,用來指定線型、色彩的選項。各種可選項如下表所示97以上各選項可用helpplot命令隨時索取!98%創(chuàng)建腳本M文件(程序),下同t=0:0.01:pi;y=sin(t.^3);plot(t,y,’r-d’)axis([03.5-11]);%指定軸的范圍xlabel(’t’,’FontSize’,12);ylabel(’sin(t^3)’,’FontSize’,12);
%給x、y軸打上標記,同時指定12號字體例:在[0,
]內(nèi),繪制函數(shù)sin(t3)的圖像991002.plot(X1,Y1,
s1
,X2,Y2,s2
,…)
同時繪制多個曲線,每個繪線三元組(X,Y,s
)的結(jié)構(gòu)和作用與plot(X,Y,s
)相同,不同的是三元組之間可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年職業(yè)技能認證培訓服務(wù)合同書3篇
- 2024年版技術(shù)轉(zhuǎn)讓合同服務(wù)內(nèi)容擴展
- 承德護理職業(yè)學院《汽車新技術(shù)》2023-2024學年第一學期期末試卷
- 成都銀杏酒店管理學院《數(shù)值分析與算法》2023-2024學年第一學期期末試卷
- 2025年度航空安全員聘用與培訓協(xié)議書
- 2024年裝配式建筑配件瓦工施工合同范本3篇
- 二零二五年工廠食堂員工用餐健康指導承包合同3篇
- 教學課件:瀝青材料的流變學特性解析
- 2024權(quán)戰(zhàn)略合作協(xié)議
- 2025版空置工業(yè)廠房租賃及倉儲物流服務(wù)合同3篇
- 天津高考英語詞匯3500
- 2023年智慧電廠垃圾焚燒發(fā)電廠解決方案
- 人資法務(wù)技能指導【紅皮書完整版】
- 三年級下冊數(shù)學教案-6練習五-北師大版
- 清潔驗證管理規(guī)程
- 建設(shè)工程質(zhì)量檢測作業(yè)指導書+儀器設(shè)備操作規(guī)程2021版
- 醫(yī)院食堂食品留樣銷毀記錄表
- 急診急救藥品用法作用一覽表
- 項目施工周報模板
- 梅毒診療指南(2014版)
- GB/T 35694-2017光伏發(fā)電站安全規(guī)程
評論
0/150
提交評論