輸入輸出-暫停-switch_第1頁(yè)
輸入輸出-暫停-switch_第2頁(yè)
輸入輸出-暫停-switch_第3頁(yè)
輸入輸出-暫停-switch_第4頁(yè)
輸入輸出-暫停-switch_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Matlab

編程入門(mén)(一)Matlab編程入門(mén)

Matlab

編程簡(jiǎn)介

Matlab作為一種廣泛應(yīng)用于科學(xué)計(jì)算的工具軟件,不僅具有強(qiáng)大的數(shù)值計(jì)算、符號(hào)計(jì)算、矩陣運(yùn)算能力和豐富的繪圖功能,同時(shí)也具有和C、FORTRAN

等高級(jí)語(yǔ)言一樣進(jìn)行程序設(shè)計(jì)。在Matlab

程序設(shè)計(jì)中,可以充分利用Matlab數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),提高編程效率。利用Matlab

的程序控制功能,可以將有關(guān)Matlab

命令編成程序存儲(chǔ)在一個(gè)文件中(M

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

就會(huì)自動(dòng)依次執(zhí)行文件中的命令,直到全部命令執(zhí)行完畢。用Matlab語(yǔ)言編寫(xiě)的程序稱(chēng)為M文件。

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

提供的內(nèi)部函數(shù)以及各種工具箱,都是利用Matlab

語(yǔ)言開(kāi)發(fā)的M文件。用戶(hù)也可以結(jié)合自己的工作需要,開(kāi)發(fā)自己的程序或工具箱。

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

Script:腳本文件/命令文件沒(méi)有輸入?yún)?shù),也不返回輸出參數(shù),也稱(chēng)為腳本文件。

Function:函數(shù)文件可以輸入?yún)?shù),也可返回輸出參數(shù)。

M文件

M

文件以.m

為擴(kuò)展名。命令文件

對(duì)于一些比較簡(jiǎn)單的問(wèn)題,在指令窗中直接輸入指令計(jì)算。

對(duì)于復(fù)雜計(jì)算,采用命令文件最為合適。MATLAB只是按文件所寫(xiě)的指令執(zhí)行。

命令文件的特點(diǎn)是:命令文件的構(gòu)成比較簡(jiǎn)單,只是一串按用戶(hù)意圖排列而成的MATLAB指令集合。命令文件運(yùn)行后,所產(chǎn)生的所有變量都駐留在MATLAB基本工作空間(Baseworkspace)中,而且,所產(chǎn)生的所有變量均為全局變量,只要用戶(hù)不使用清除指令(clear),MATLAB指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中。函數(shù)文件

與腳本文件不同,函數(shù)文件猶如一個(gè)“黑箱”,把一些數(shù)據(jù)送進(jìn)并經(jīng)加工處理,再把結(jié)果送出來(lái)。MATLAB提供的函數(shù)指令大部分都是由函數(shù)文件定義的。

函數(shù)文件的特點(diǎn)是:

從形式上看,與腳本文件不同,函數(shù)文件的笫一行總是以“function”引導(dǎo)的“函數(shù)申明行”。從運(yùn)行上看,與腳本文件運(yùn)行不同,每當(dāng)函數(shù)文件運(yùn)行,MATLAB就會(huì)專(zhuān)門(mén)為它開(kāi)辟一個(gè)臨時(shí)工作空間,稱(chēng)為函數(shù)工作空間(Functionworkspace)。當(dāng)執(zhí)行文件最后一條指令時(shí),就結(jié)束該函數(shù)文件的運(yùn)行,同時(shí)該臨時(shí)函數(shù)空間及其所有的中間變量就立即被清除。MATLAB允許使用比“標(biāo)稱(chēng)數(shù)目”較少的輸入輸出變量,實(shí)現(xiàn)對(duì)函數(shù)的調(diào)用。

M

文件是一個(gè)文本文件,可以用任何文本編輯器來(lái)建立和編輯,通常使用Matlab

自帶的M

文件編輯器。M文件的建立與打開(kāi)新建一個(gè)M文件菜單操作(FileNewM-File

)命令操作

(edit

M文件名)命令按鈕

(

快捷鍵

)打開(kāi)已有的M文件菜單操作

(FileOpen

)命令操作(edit

M文件名)命令按鈕

(

快捷鍵

)雙擊M

文件在命令窗口中輸入f2cs,即可執(zhí)行該M

文件。例:編寫(xiě)一個(gè)命令文件將f轉(zhuǎn)化為c命令文件舉例clear;%清除當(dāng)前工作空間中的變量f=input('Pleaseinputf:');c=5*(f-32)/9;fprintf('cis%g\n',c);新建一個(gè)M

文件

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

查看。關(guān)系運(yùn)算<小于<=小于等于>大于>=大于等于==等于~=不等于比較大小,如果結(jié)論是真則返回1,否則返回0注意==與=

的區(qū)別關(guān)系操作符能用來(lái)比較兩個(gè)標(biāo)量,或兩個(gè)同樣大小的數(shù)組,或用來(lái)比較一個(gè)數(shù)組和一個(gè)標(biāo)量關(guān)系運(yùn)算符關(guān)系運(yùn)算符的運(yùn)算法則為:(1)當(dāng)兩個(gè)比較量是標(biāo)量時(shí),直接比較兩數(shù)的大小。若關(guān)系成立,關(guān)系表達(dá)式結(jié)果為1,否則為0。(2)當(dāng)參與比較的量是兩個(gè)維數(shù)相同的矩陣時(shí),比較是對(duì)兩矩陣相同位置的元素按標(biāo)量關(guān)系運(yùn)算規(guī)則逐個(gè)進(jìn)行,并給出元素比較結(jié)果。最終的關(guān)系運(yùn)算的結(jié)果是一個(gè)維數(shù)與原矩陣相同的矩陣,它的元素由0或1組成。

(3)當(dāng)參與比較的一個(gè)是標(biāo)量,而另一個(gè)是矩陣時(shí),則把標(biāo)量與矩陣的每一個(gè)元素按標(biāo)量關(guān)系運(yùn)算規(guī)則逐個(gè)比較,并給出元素比較結(jié)果。最終的關(guān)系運(yùn)算的結(jié)果是一個(gè)維數(shù)與原矩陣相同的矩陣,它的元素由0或1組成。關(guān)系運(yùn)算例:關(guān)系運(yùn)算舉例>>

2+2==4>>

2>3>>

A=[135;206];>>

B=[310;246];>>

A>=B>>

x=[50;42];>>

x<4例:

產(chǎn)生5階隨機(jī)方陣A,其元素為[10,90]區(qū)間的隨機(jī)整數(shù),然后判斷A的元素是否能被3整除。解:

(1)生成5階隨機(jī)方陣A。

A=round((90-10)*rand(5)+10)

(2)判斷A的元素是否可以被3整除。

P=rem(A,3)==0

其中,rem(A,3)是矩陣A的每個(gè)元素除以3的余數(shù)矩陣。此時(shí),0被擴(kuò)展為與A同維數(shù)的零矩陣,P是進(jìn)行等于(==)比較的結(jié)果矩陣。&與|或~非xor(x,y)異或邏輯運(yùn)算邏輯運(yùn)算符&&與(Short-circuitAND)||或(Short-circuitOR)A

&

B

等價(jià)于and(A,B)A

|

B

等價(jià)于or(A,B)

~

A

等價(jià)于not(A)運(yùn)算對(duì)象與或非異或ABA&BA|B~AXor(A,B)000010010111100101111100邏輯運(yùn)算表all(x)

如果向量X

中所有元素都非零,則返回1,

否則返回0若x為矩陣,則any

和all

按列運(yùn)算,返回一個(gè)0-1向量邏輯運(yùn)算相關(guān)函數(shù)any(x)如果向量X

中存在非零元素,則返回1,

否則返回0isfinite元素為有限值,返回真值1isinf元素為無(wú)窮大,返回真值1isnan元素為不定值,返回真值1isreal參量無(wú)虛部,返回真值1isstr參量為一個(gè)字符串,返回真值1isempty參量為空,返回真值1一些測(cè)試函數(shù)括號(hào)冪,點(diǎn)冪正號(hào),符號(hào),邏輯非乘,除,點(diǎn)乘,點(diǎn)除加,減冒號(hào)運(yùn)算關(guān)系運(yùn)算&|&&||運(yùn)算優(yōu)先級(jí)高低程序控制結(jié)構(gòu)有三種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。任何復(fù)雜的程序都由這三種基本結(jié)構(gòu)組成。順序結(jié)構(gòu)M文件控制流按排列順序依次執(zhí)行各條語(yǔ)句,直到程序的最后。這是最簡(jiǎn)單的一種程序結(jié)構(gòu),一般涉及數(shù)據(jù)的輸入輸出、數(shù)據(jù)的計(jì)算或處理等。例:A=input('PleaseinputA:')數(shù)據(jù)的輸入:inputA=input(提示信息)其中提示信息為字符串,該命令要求用戶(hù)輸入A

的值(可以是數(shù)或字符串)數(shù)據(jù)輸入inputA=input(提示信息,'s')注:此時(shí)輸入的字符串不要加單引號(hào)!如果是輸入字符串,也可以使用下面的方法name=input('What''syourname?','s')例:disp(X)輸出變量X的值,可以是數(shù)值矩陣或字符串>>

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

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

A='Hello,Tom!';>>

disp(A)例:數(shù)據(jù)輸出fprintffprintf(fid,format,variables)按指定的格式將變量的值輸出到指定的文件數(shù)據(jù)的輸出:fprintf

fid

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

format

用來(lái)指定數(shù)據(jù)輸出時(shí)采用的格式,常見(jiàn)的有%d(整數(shù))%e(實(shí)數(shù):采用科學(xué)計(jì)數(shù)法形式)%f(實(shí)數(shù):采用浮點(diǎn)數(shù)形式)%g(由系統(tǒng)自動(dòng)選取上述兩種格式之一)

%s(輸出字符串)

format

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

(換行)\b

(退格)

\\

(反斜桿)

%%

(百分號(hào))

數(shù)據(jù)輸出fprintf>>

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

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

format

中的輸出格式要與輸出變量一一對(duì)應(yīng)

可以沒(méi)有輸出變量>>

fprintf('

TodayisMonday\n')例:pause

程序的暫停:pausepause或

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

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

pauseoff

屏蔽程序中所有

pause

的作用

pauseon

打開(kāi)

pause

的作用選擇結(jié)構(gòu)是根據(jù)給定的條件成立或不成立,分別執(zhí)行不同的語(yǔ)句。Matlab

用于實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句有if

語(yǔ)句和switch

語(yǔ)句。選擇結(jié)構(gòu)單分支結(jié)構(gòu)ifexpression

(條件)

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

statements1(語(yǔ)句組1)else

statements2(語(yǔ)句組2)end雙分支結(jié)構(gòu)ifexpression1(條件1)

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

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

elseifexpressionm(條件m)

statementsm(語(yǔ)句組m)else

statements(語(yǔ)句組)end多分支結(jié)構(gòu)if條件語(yǔ)句例輸入三角形的三條邊,利用海倫公式求面積。

程序:

A=input('請(qǐng)輸入三角形的三條邊:');ifA(1)+A(2)>A(3)&A(1)+A(3)>A(2)&A(2)+A(3)>A(1)

p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));disp(s);else

disp('不能構(gòu)成一個(gè)三角形。')end程序示例運(yùn)行:請(qǐng)輸入三角形的三條邊:[456]9.9216根據(jù)表達(dá)式的不同取值,分別執(zhí)行不同的語(yǔ)句。switchexpression(表達(dá)式)casevalue1(表達(dá)式1)

statement1(語(yǔ)句組1)casevalue2(表達(dá)式2)

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

(表達(dá)式m)

statementm(語(yǔ)句組m)otherwise

statement(語(yǔ)句組)endswitch語(yǔ)句

Matlab首先計(jì)算expression的值,然后將它依次與各個(gè)case指令后的檢測(cè)值進(jìn)行比較,當(dāng)比較結(jié)果為真時(shí),就執(zhí)行相應(yīng)的語(yǔ)句組,然后跳出switch結(jié)構(gòu)。

switch后面的表達(dá)式expression的值可以是一個(gè)標(biāo)量或字符串。switch語(yǔ)句

otherwise指令可以不出現(xiàn)。如果所有的比較結(jié)果都為假,則執(zhí)行otherwise后面的語(yǔ)句組,然后跳出switch結(jié)構(gòu)。例

某商場(chǎng)對(duì)顧客所購(gòu)買(mǎi)的商品實(shí)行打折銷(xiāo)售,標(biāo)準(zhǔn)如下(商品價(jià)格用price來(lái)表示):

price<200沒(méi)有折扣

200≤price<5003%折扣

500≤price<10005%折扣

1000≤price<25008%折扣

2500≤price<500010%折扣5000≤price14%折扣輸入所售商品的價(jià)格,求其實(shí)際銷(xiāo)售價(jià)格。程序示例

程序如下:price=input('請(qǐng)輸入商品價(jià)格');switch

fix(price/100)

case{0,1}%價(jià)格小于200rate=0;

case{2,3,4}%價(jià)格大于等于200但小于500rate=3/100;

casenum2cell(5:9)%價(jià)格大于等于500但小于1000rate=5/100;

casenum2cell(10:24)%價(jià)格大于等于1000但小于2500rate=8/100;

casenum2cell(25:49)%價(jià)格大于等于2500但小于5000rate=10/100;

otherwise

%價(jià)格大于等于5000rate=14/100;endprice=price*(1-rate)%輸出商品實(shí)際銷(xiāo)售價(jià)格程序示例循環(huán)結(jié)構(gòu)是按照給定的條件,重復(fù)執(zhí)行指定的語(yǔ)句。Matlab用于實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句有for語(yǔ)句和while語(yǔ)句循環(huán)結(jié)構(gòu)forvariable=expression

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

表達(dá)式expression

可以是行向量,也可以是矩陣。執(zhí)行過(guò)程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語(yǔ)句,直至各列元素處理完畢。for循環(huán)clear;y=0;n=100;fork=1:n

y=y+1/(2*k-1);end例:已

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論