Matlab編程入門-下課件_第1頁
Matlab編程入門-下課件_第2頁
Matlab編程入門-下課件_第3頁
Matlab編程入門-下課件_第4頁
Matlab編程入門-下課件_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

專題三Matlab編程入門(2)2023/7/221Matlab編程入門

Matlab

編程簡介

Matlab作為一種廣泛應用于科學計算的工具軟件,不僅具有強大的數(shù)值計算、符號計算、矩陣運算能力和豐富的繪圖功能,同時也具有和C、FORTRAN

等高級語言一樣進行程序設計。在Matlab

程序設計中,要充分利用Matlab數(shù)據(jù)結構的特點,提高編程效率。利用Matlab

的程序控制功能,可以將有關Matlab

命令編成程序存儲在一個文件中(M

文件),然后在命令窗口中運行該文件,Matlab

就會自動依次執(zhí)行文件中的命令,直到全部命令執(zhí)行完畢。2023/7/222中國計量學院理學院lxy

M文件是由若干Matlab命令組合在一起構成的,它可以完成某些操作,也可以實現(xiàn)某種算法。

M文件根據(jù)調(diào)用方式的不同可以分為兩類:

Script:腳本文件/命令文件

Function:函數(shù)文件M文件

M

文件以.m

為擴展名。2023/7/223中國計量學院理學院lxyM文件的建立與打開新建一個M文件菜單操作(FileNewM-File

)命令操作

(edit

M文件名)命令按鈕

(

快捷鍵

)打開已有的M文件菜單操作

(FileOpen

)命令操作(edit

M文件名)命令按鈕

(

快捷鍵

)雙擊M

文件2023/7/224中國計量學院理學院lxy在命令窗口中輸入f2cs,即可執(zhí)行該M

文件。例:編寫一個腳本文件將華氏溫度轉化為攝氏溫度腳本文件舉例clear;%清除當前工作空間中的變量f=input('PleaseinputFahrenheittemperature:');c=5*(f-32)/9;fprintf('Thecentigradetemperatureis%g\n',c);新建一個M

文件

f2cs.m,內(nèi)容如下:腳本文件運行后,文件中所產(chǎn)生的所有變量都駐留在Matlab當前工作空間,可以用whos

查看。2023/7/225中國計量學院理學院lxy一個完整的函數(shù)M文件的結構為:functionf=fact(n)函數(shù)定義語句%Computeafactorialvalue.H1行%FACT(N)returnsthefactorialofN,幫助文本%usuallydenotedbyN!%Putsimply,FACT(N)isPROD(1:N).注釋語句f=prod(1:n);函數(shù)體函數(shù)定義語句只在函數(shù)文件中存在,定義函數(shù)名稱、輸入輸出參數(shù)的數(shù)量和順序。函數(shù)定義語句的格式為:functiony=fact(x)。M文本文件介紹2023/7/226中國計量學院理學院lxyM文本文件介紹一個一般的腳本M文件%scriptm-:calculatethevolumeand

surfaceareaofacolumer=1;%theradiusofthecolumeh=1;%thehightofthecolumes=2*r*pi*h+2*pi*r^2;%calculatethesurfaceareav=pi*r^2*h;%calculatethevolumedisp('Thesurfaceareaofthecolumeis:'),disp(s);disp('Thevolumeofthecolumeis:'),disp(v);2023/7/227中國計量學院理學院lxy關系運算<小于<=小于等于>大于>=大于等于==等于~=不等于比較大小,如果結論是真則返回1,否則返回0注意==與=

的區(qū)別關系操作符能用來比較兩個同樣大小的數(shù)組,或用來比較一個數(shù)組和一個標量,在后一種情況,標量和數(shù)組中的每一個元素相比較,比較結果與數(shù)組大小一樣。關系運算符2023/7/228中國計量學院理學院lxy例:關系運算舉例>>

2+2==4>>

2>3>>

A=[135;206];>>

B=[310;246];>>

A>=B>>

x=[50;42];>>

x<42023/7/229中國計量學院理學院lxy&與(ElementwiseAND)|或(ElementwiseOR)~非xor(x,y)異或邏輯運算邏輯運算符A

&

B

等價于and(A,B)A

|

B

等價于or(A,B)

~

A

等價于not(A)2023/7/2210中國計量學院理學院lxy括號冪,點冪正號,符號,邏輯非乘,除,點乘,點除加,減冒號運算關系運算&|&&||運算優(yōu)先級高低2023/7/2211中國計量學院理學院lxy程序控制結構有三種:順序結構、選擇結構和循環(huán)結構。任何復雜的程序都由這三種基本結構組成。順序結構M文件控制流按排列順序依次執(zhí)行各條語句,直到程序的最后。這是最簡單的一種程序結構,一般涉及數(shù)據(jù)的輸入輸出、數(shù)據(jù)的計算或處理等。2023/7/2212中國計量學院理學院lxy例:A=input('PleaseinputA:')數(shù)據(jù)的輸入:inputA=input(提示信息)其中提示信息為字符串,該命令要求用戶輸入A

的值(可以是數(shù)或字符串)數(shù)據(jù)輸入inputA=input(提示信息,'s')注:此時輸入的字符串不要加單引號!如果是輸入字符串,也可以使用下面的方法name=input('What''syourname?','s')例:2023/7/2213中國計量學院理學院lxydisp(X)輸出變量X的值,可以是數(shù)值矩陣或字符串>>

B=[123;456;789];>>

disp(B)數(shù)據(jù)輸出disp數(shù)據(jù)的輸出:disp>>

A='Hello,Tom!';>>

disp(A)例:2023/7/2214中國計量學院理學院lxy數(shù)據(jù)輸出fprintffprintf(fid,format,variables)按指定的格式將變量的值輸出到指定的文件數(shù)據(jù)的輸出:fprintf

fid

為文件句柄,若缺省,則將變量的值輸出到屏幕上

format

用來指定數(shù)據(jù)輸出時采用的格式,常見的有%e(采用科學計算形式)%f(采用浮點數(shù)形式)%g(由系統(tǒng)自動選取上述兩種格式之一)

%s(輸出字符串)

format

中還可以使用一些特殊格式,如:\n

(換行)\t

(制表符)\b

(退格)

\\

(反斜桿)

%%

(百分號)

2023/7/2215中國計量學院理學院lxy數(shù)據(jù)輸出fprintf>>

a='Hello';b=2.4;c=100*pi;>>

fprintf('a=%s,b=%f,c=%e\n',a,b,c)例:

format

中的輸出格式要與輸出變量一一對應

可以沒有輸出變量>>

fprintf('

TodayisMonday\n')例:2023/7/2216中國計量學院理學院lxypause

程序的暫停:pausepause或

pause(n)若想強行終止程序的運行,可以使用Ctrl+c其中n

是延遲時間,以秒為單位;若缺省,則將暫停程序,直到用戶按任意鍵后繼續(xù)

pauseoff

屏蔽程序中所有

pause

的作用

pauseon

打開

pause

的作用2023/7/2217中國計量學院理學院lxy定義函數(shù)m文件MATLAB的內(nèi)部函數(shù)是有限的,有時為了研究某一個函數(shù)的各種性態(tài),需要為MATLAB定義新函數(shù),為此必須編寫函數(shù)文件.定義函數(shù)的m文件有特殊的格式要求:第一行必須是一特殊字符function開始,格式為:

function因變量名=函數(shù)名(自變量名)(函數(shù)體)2023/7/2218中國計量學院理學院lxy例:定義函數(shù)z=100(y-x2)2+(1-x)2functionz=fun(x,y)1.建立M文件:fun.m2.可以直接使用函數(shù)fun.m例如:計算fun(1,2),只需在Matlab命令窗口鍵入命令:x=1,y=2fun(x)z=100*(y-x^2)^2+(1-x)^2;2023/7/2219中國計量學院理學院lxy選擇結構是根據(jù)給定的條件成立或不成立,分別執(zhí)行不同的語句。Matlab

用于實現(xiàn)選擇結構的語句有if

語句和switch

語句。選擇結構2023/7/2220中國計量學院理學院lxy單分支結構ifexpression

(條件)

statements(語句組)endif條件語句ifexpression(條件)

statements1(語句組1)else

statements2(語句組2)end雙分支結構2023/7/2221中國計量學院理學院lxyifexpression1(條件1)

statements1(語句組1)elseifexpression2(條件2)

statements2(語句組2)......

elseifexpressionm(條件m)

statementsm(語句組m)else

statements(語句組)end多分支結構if條件語句P141Eg.07-062023/7/2222中國計量學院理學院lxy根據(jù)表達式的不同取值,分別執(zhí)行不同的語句。switchexpression(表達式)casevalue1(表達式1)

statement1(語句組1)casevalue2(表達式2)

statement2(語句組2)......casevaluem

(表達式m)

statementm(語句組m)otherwise

statement(語句組)endswitch語句2023/7/2223中國計量學院理學院lxy

Matlab首先計算expression的值,然后將它依次與各個case指令后的檢測值進行比較,當比較結果為真時,就執(zhí)行相應的語句組,然后跳出switch結構。

switch后面的表達式expression的值可以是一個標量或字符串。switch語句

otherwise指令可以不出現(xiàn)。如果所有的比較結果都為假,則執(zhí)行otherwise后面的語句組,然后跳出switch結構。2023/7/2224中國計量學院理學院lxy例:利用分支語句編寫條件判斷程序,實現(xiàn)任意底對數(shù)的計算。switch舉例分析:

Matlab中只提供了有限底的對數(shù)函數(shù)。P143Eg.07-072023/7/2225中國計量學院理學院lxy循環(huán)結構

for語句和while語句循環(huán)結構2023/7/2226中國計量學院理學院lxyforvariable=expression

statement(循環(huán)體)end循環(huán)變量

表達式expression

可以是行向量,也可以是矩陣for循環(huán)clear;y=0;n=100;fork=1:n

y=y+1/(2*k-1);end例:已知,當n=100時,求y的值!!不能在for循環(huán)體內(nèi)改變循環(huán)變量的值!!2023/7/2227中國計量學院理學院lxy循環(huán)語句可以嵌套使用while循環(huán)whileexpression(條件)

statement(循環(huán)體)end如果預先就知道循環(huán)的次數(shù),則可以采用for循環(huán);否則,如果預先無法確定循環(huán)的次數(shù),則可以使用while循環(huán)。2023/7/2228中國計量學院理學院lxy這個例子給出了計算eps

的一種方法。這里我們用大寫EPS,因此系統(tǒng)中eps

的值不會被覆蓋。當EPS=eps

時,條件仍成立;而當EPS=eps/2

時,條件為假,退出循環(huán),所以最后應有EPS=eps/2。num

用來記錄循環(huán)次數(shù)。計算Matlab

中eps

值while循環(huán)舉例num=0;EPS=1;while(1+EPS)>1EPS=EPS/2;num=num+1;end2023/7/2229中國計量學院理學院lxy

break

continue

break

語句用于終止循環(huán)的執(zhí)行,即跳出最內(nèi)層循環(huán)

continue

語句用于結束本次循環(huán),進行下一次循環(huán)

break

和continue

一般與if

語句配合使用其它流控制語句

return

return

語句用于退出正在運行的腳本或函數(shù),通常用在函數(shù)文件中。2023/7/2230中國計量學院理學院lxy首先由計算機隨機產(chǎn)生一個[1,100]之間的一個整數(shù),然后由用戶猜測所產(chǎn)生的這個數(shù)。根據(jù)用戶猜測的情況給出不同的提示,如果猜測的數(shù)大于產(chǎn)生的數(shù),則顯示High,小于則顯示

Low,等于則顯示Youwon!,同時退出游戲。用戶最多有7次機會。程序示例猜數(shù)游戲2023/7/2231中國計量學院理學院lxy程序示例數(shù)論中的一個有趣問題:任取一個正整數(shù),如果是偶數(shù),用2除,如果是奇數(shù),用3乘再加1,反復這個過程,直到所得到的數(shù)為1。問:是否存在使該過程永不中止的整數(shù)?2023/7/2232中國計量學院理學院lxywhile

1

n=input('Pleaseentern(nonpositivequit):');

if

n<=0,

break;endnt=n;

while

n>1

if

rem(n,2)==0

n=n/2;

else

n=3*n+1;

end

fprintf('\nn=%d',n);

end

fprintf('\nn=%disnotweneed!continue...\n',nt);end程序示例2023/7/2233中國計量學院理學院lxy函數(shù)變量局部變量全局變量永久變量2023/7/2234中國計量學院理學院lxy局部變量每個函數(shù)都有自己的局部變量,這些變量存儲在該函數(shù)獨立的工作區(qū)中,與其他函數(shù)的變量及主工作區(qū)中的變量分開存儲。當函數(shù)調(diào)用結束時,這些變量隨之刪除,不保存在內(nèi)存中。在函數(shù)中,變量默認為局部變量。2023/7/2235中國計量學院理學院lxy全局變量與局部變量不同,全局變量可以在定義該變量的全部工作區(qū)中有效。當在一個工作區(qū)內(nèi)改變該變量的值時,該變量在其他工作區(qū)中的變量同時改變。任何函數(shù)如果需要使用全局變量,則必須首先聲明,聲明格式為:global變量名1變量名22023/7/2236中國計量學院理學院lxy永久變量除局部變量和全局變量外,MATLAB中還有一種變量類型為永久變量。永久變量的特點為:只能在M文件內(nèi)部定義;只有該變量從屬的函數(shù)能夠訪問該變量;當函數(shù)運行結束時,該變量的值保留在內(nèi)存中,因此當該函數(shù)再次被調(diào)用時,可以再次利用這些變量。永久變量的定義方法為:persistent變量名1變量名2。2023/7/2237中國計量學院理學院lxy程序示例%ex4global.mclear;globalaba=1;b=3;y=mysquaresum(a,b);fprintf('a=%g,b=%g\n',a,b);z=myproduct(a,b);fprintf('a=%g,b=%g\n',a,b);%mysquaresum.mfunctionsquare_sum=mysquaresum(x,y)square_sum=x^2+y^2;a=x+y;%myproduct.mfunctionproduct=myproduct(x,y)globalaproduct=x*y;a=x+y;2023/7/2238中國計量學院理學院lxy2023/7/2239中國計量學院理學院lxy補充1函數(shù)類型1匿名函數(shù)2主函數(shù)3子函數(shù)4嵌套函數(shù)5私有函數(shù)6重載函數(shù)2023/7/2240中國計量學院理學院lxy匿名函數(shù)匿名函數(shù)提供了一種創(chuàng)建簡單程序的方法,使用它用戶可以不必每次都編寫M文件。用戶可以在MATLAB的命令窗口或是其他任意M文件和腳本文件中使用匿名函數(shù)。

匿名函數(shù)的格式為:fhandle=@(arglist)expr

其中fhandle是為該函數(shù)創(chuàng)建的函數(shù)句柄;@符號用于創(chuàng)建函數(shù)句柄;arglist為用逗號分隔的參數(shù)列表;expr為函數(shù)主體,為MATLAB表達式。P149Eg.07-132023/7/2241中國計量學院理學院lxyfunction

printyh(n)%打印楊輝三角形,本函數(shù)沒有輸出參數(shù)yh=1;disp(yh);ifn==1,return;endyh=[1,1];disp(yh);fork=3:nyh_old=yh;k2=ceil(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論