




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
注意,前面的單個(gè)等號(hào)表示賦值,后面的雙等號(hào)則表示關(guān)系運(yùn)算。式中2+2==4是關(guān)系運(yùn)算,它的優(yōu)先級(jí)高,算出的結(jié)果給a賦值,為了改善可讀性,最好加上括號(hào),寫(xiě)成a=(2+2==4),表明是把括號(hào)內(nèi)的關(guān)系式的結(jié)果給a賦值,但表示關(guān)系運(yùn)算的相等符號(hào)仍必須用雙等號(hào)。目前一頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)MATLAB中的關(guān)系運(yùn)算都適用于矩陣,它是對(duì)矩陣的各個(gè)元素進(jìn)行元素群運(yùn)算,因此兩個(gè)相比較的矩陣必須有相同的階數(shù),輸出的結(jié)果也是同階矩陣。例如鍵入
A=magic(6)得
A=3516261924 3327212325 3192222720 82833171015 30534121416 43629131811目前二頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)要找到此矩陣中所有被3整除的元素,并在其位置上標(biāo)以1,可以用表2-4中的rem函數(shù),rem(A,3)表示A除以3的余數(shù),余數(shù)為零就是整除。鍵入
p=(rem(A,3)==0)得
p=001001100100010010001001100100010010目前三頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)rem(A,3)表示A除以3的余數(shù),余數(shù)為零就是整除。目前四頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)關(guān)系運(yùn)算中還包括某些條件判斷,例如判斷矩陣元素中有無(wú)NaN、Inf值,矩陣是否為實(shí)數(shù)陣、稀疏陣或空陣等,它們不能直接用上述六種關(guān)系符簡(jiǎn)單地表述,MATLAB把它們編成了專(zhuān)用的函數(shù)以備直接調(diào)用,見(jiàn)表2-5。目前五頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)目前六頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)目前七頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)[j,k]=find(p~=0)給出p矩陣中不為零的元素的兩個(gè)下標(biāo),find(p~=0)或lp=find(p~=0)給出p矩陣中不為零的元素的順序號(hào)。矩陣元素是按列排序號(hào)的,先排第一列,再排第二列……,依次排完后,再確定它們的順序號(hào)。一個(gè)6×6的矩陣的36個(gè)元素的序號(hào)排列見(jiàn)表2-6。因此一個(gè)m×n陣中下標(biāo)為(j,k)的元素,其序號(hào)為l=(k-1)*n+j。目前八頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)[j,k]=find(p~=0)給出p矩陣中不為零的元素的兩個(gè)下標(biāo)目前九頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)鍵入
lp=find(p~=0)'得
lp=259121316202327303134
目前十頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)find(p~=0)或lp=find(p~=0)給出p矩陣中不為零的元素的順序號(hào)。矩陣元素是按列排序號(hào)的,先排第一列,再排第二列……,依次排完后,再確定它們的順序號(hào)。一個(gè)6×6的矩陣的36個(gè)元素的序號(hào)排列見(jiàn)表2-6。因此一個(gè)m×n陣中下標(biāo)為(j,k)的元素,其序號(hào)為l=(k-1)*n+j。可以看出這些序號(hào)確實(shí)對(duì)應(yīng)于p中的l元素。矩陣的序號(hào)(index)與下標(biāo)(subscript)是一一對(duì)應(yīng)的。目前十一頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)邏輯量只能取0(假)和1(真)兩個(gè)值。邏輯量的基本運(yùn)算為“與(&)”、“或(|)”和“非(~)”三種。有時(shí)也包括“異或(xor)”,不過(guò)“異或”可以用三種基本運(yùn)算組合而成。兩個(gè)邏輯量經(jīng)這三種邏輯運(yùn)算后的輸出仍然是邏輯量,表示邏輯量的輸入/輸出關(guān)系的表稱為真值表,見(jiàn)表2-7。目前十二頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)所有的算法語(yǔ)言中都有邏輯運(yùn)算。MATLAB的特點(diǎn)是使邏輯運(yùn)算用于元素群,得出同階的0-1矩陣。為了按列、按行判斷一群元素的邏輯值,它又增加了兩種對(duì)元素群的邏輯運(yùn)算函數(shù)all(全為真)和any(不全為假),見(jiàn)表2-5。現(xiàn)在來(lái)看邏輯式u=p|~p,這是把p和非p求“或”。得
u=111111111111111111111111111111111111目前十三頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)~p就是把p中的0元素?fù)Q成1,1元素?fù)Q成0。在p和非p對(duì)應(yīng)位置上的元素,必有一個(gè)是1,把p和~p“或”起來(lái),一定是全1。目前十四頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)all和any后的輸入變量應(yīng)為矩陣,它是按列運(yùn)算的。從它們的定義可知
all(p)=000000(列中有一個(gè)元素為0,即得0)all(u)=111111(列中元素為全1,才得1) any(p)=111111(列中有一個(gè)元素為1,即得1)
目前十五頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)目前十六頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)計(jì)算機(jī)程序通常都是從前到后逐條執(zhí)行的。但有時(shí)也會(huì)根據(jù)實(shí)際情況,中途改變執(zhí)行的次序,稱為流程控制。MATLAB設(shè)有四種流程控制的語(yǔ)言結(jié)構(gòu),即if語(yǔ)句、while語(yǔ)句、for語(yǔ)句和switch語(yǔ)句。
1.if語(yǔ)句根據(jù)復(fù)雜程度,if語(yǔ)句有三種形式。
(1)if(表達(dá)式)語(yǔ)句組A,end。其流程見(jiàn)圖2-1(a)。執(zhí)行到此語(yǔ)句時(shí),計(jì)算機(jī)先檢驗(yàn)if后的邏輯表達(dá)式,如為1,就執(zhí)行語(yǔ)句組A;如為0,就跳過(guò)語(yǔ)句組A,直接執(zhí)行end后的后續(xù)語(yǔ)句。注意,這個(gè)end是決不可少的,沒(méi)有它,在表達(dá)式為0時(shí),就找不到繼續(xù)執(zhí)行的程序入口。目前十七頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)(2)if(表達(dá)式)語(yǔ)句組A,else語(yǔ)句組B,end。其流程見(jiàn)圖2-1(b)。執(zhí)行到此語(yǔ)句時(shí),計(jì)算機(jī)先檢驗(yàn)if后的(邏輯)表達(dá)式,如為1,就執(zhí)行語(yǔ)句組A;如為0,就執(zhí)行語(yǔ)句組B。else用來(lái)標(biāo)志語(yǔ)句組B的執(zhí)行條件,同時(shí)也標(biāo)志語(yǔ)句組A的結(jié)束(免去了end)。同樣,最后的end是不可少的,沒(méi)有它,執(zhí)行完語(yǔ)句組B后,就找不到進(jìn)入后續(xù)程序的入口。
(3)if(表達(dá)式1)語(yǔ)句組A,elseif(表達(dá)式2)語(yǔ)句組B,else語(yǔ)句組C,end。其流程見(jiàn)圖2-1(c)。前兩種形式的if語(yǔ)句都是兩分支的程序結(jié)構(gòu),要實(shí)現(xiàn)兩個(gè)以上分支的結(jié)構(gòu)就得采用含elseif的結(jié)構(gòu)。圖中表示的是三分支的情況。在語(yǔ)句中間可加入多個(gè)elseif以形成多個(gè)分支,只是程序結(jié)構(gòu)顯得冗長(zhǎng)。目前十八頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)圖2-1if語(yǔ)句的三種程序結(jié)構(gòu)形式目前十九頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)【例2-4-1】輸入數(shù)n,判斷其奇偶性。程序如下:
n=input('n='),ifrem(n,2)==0A='even',elseA='odd',end運(yùn)行此程序時(shí),程序要求用戶輸入一個(gè)數(shù),然后判斷該數(shù)是奇數(shù)還是偶數(shù)。所以該程序共有兩個(gè)出口。實(shí)際上這個(gè)程序并不全面,如果用戶根本未鍵入任何數(shù)就回車(chē),程序會(huì)判斷為“odd”(請(qǐng)讀者考慮其原因)。為了使程序在用戶無(wú)輸入時(shí)自動(dòng)中止,可以把程序改為
clcclearn=7;ifisempty(n)==1A='empty'elseifrem(n,2)==0A='even'elseA='odd'end實(shí)際上這個(gè)程序仍不全面,它不能用于負(fù)數(shù),請(qǐng)讀者分析其原因。目前二十頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)運(yùn)行此程序時(shí),程序要求用戶輸入一個(gè)數(shù),然后判斷該數(shù)是奇數(shù)還是偶數(shù)。所以該程序共有兩個(gè)出口。目前二十一頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)實(shí)際上這個(gè)程序并不全面,如果用戶根本未鍵入任何數(shù)就回車(chē),程序會(huì)判斷為“odd”(請(qǐng)讀者考慮其原因)。為了使程序在用戶無(wú)輸入時(shí)自動(dòng)中止,可以把程序改為ifisempty(n)==1A='empty',elseifrem(n,2)==0A='even',elseA='odd',end目前二十二頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)2.while語(yǔ)句
while語(yǔ)句的結(jié)構(gòu)形式為
while(表達(dá)式)語(yǔ)句組A,end其流程見(jiàn)圖2-2。執(zhí)行到此語(yǔ)句時(shí),計(jì)算機(jī)先檢驗(yàn)while后的邏輯表達(dá)式,如為1,它就執(zhí)行語(yǔ)句組A;到end處后,它跳回到while的入口,再檢驗(yàn)表達(dá)式;如還是1,再執(zhí)行語(yǔ)句組A;周而復(fù)始,直到表達(dá)式不成立(結(jié)果為零)為止。此時(shí)跳過(guò)語(yǔ)句組A,直接執(zhí)行end后的后續(xù)語(yǔ)句。while語(yǔ)句與if語(yǔ)句的不同在于它的分支中是循環(huán)地執(zhí)行某個(gè)語(yǔ)句組,故稱為循環(huán)語(yǔ)句。目前二十三頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)圖2-2while語(yǔ)句流程圖目前二十四頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)
【例2-4-2】求MATLAB中的最大實(shí)數(shù)。
解:我們?cè)O(shè)定一個(gè)數(shù)x,讓它不斷增大,直到MATLAB無(wú)法表示它的值,只能表示為inf為止。于是,可列出下列程序
clcclearx=1;whilex~=inf,x1=x;x=2*x;end,x1formatshorte其中我們先設(shè)x=1,進(jìn)入while循環(huán)。運(yùn)行這行程序,得
x1=8.9885e+307目前二十五頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)先設(shè)x=1,進(jìn)入while循環(huán),只要x不等于inf,就把x加倍,直到x=inf。如果把此時(shí)的x顯示出來(lái),它是無(wú)窮大,不是題中要找的數(shù)。要找的是變?yōu)闊o(wú)窮大之前的最大數(shù),因此在對(duì)x加倍之前,把它存在x1中,顯示的x1就是要求的最大數(shù)。運(yùn)行這行程序,得
x1=8.9885e+307系統(tǒng)的最大浮點(diǎn)實(shí)數(shù)為(2-eps)*21023,其十進(jìn)制形式為realmax=1.7977e+308。兩者數(shù)量級(jí)接近,但還是相差將近一倍,這是因?yàn)槲覀兠看伟褁翻一番,故求得的數(shù)可能比最大數(shù)小不到一半目前二十六頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)系統(tǒng)的最大浮點(diǎn)實(shí)數(shù)為(2-eps)*21023,其十進(jìn)制形式為
realmax=1.7977e+308兩者數(shù)量級(jí)接近,但還是相差將近一倍,這是因?yàn)槲覀兠看伟褁翻一番,故求得的數(shù)可能比最大數(shù)小不到一半。如果把程序中的x=2*x改為x=1.1*x,結(jié)果就會(huì)準(zhǔn)確一些,得到
目前二十七頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)如果把程序中的x=2*x改為x=1.1*x,結(jié)果就會(huì)準(zhǔn)確一些,得到目前二十八頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)
【例2-4-3】求MATLAB的相對(duì)精度。
解:解題的思路是讓y不斷減小,直至MATLAB分不出1+y與1的差別為止。其程序?yàn)?/p>
clccleary=1;while1+y>1y1=y;y=y/2;end,y1結(jié)果為
y1=2.2204e-016目前二十九頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)它就是MATLAB內(nèi)部給出的浮點(diǎn)數(shù)相對(duì)精度。目前三十頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)
3.for語(yǔ)句
for語(yǔ)句的結(jié)構(gòu)形式為
fork=初值:增量:終值語(yǔ)句組A,end即它把語(yǔ)句組A反復(fù)執(zhí)行N次,每次執(zhí)行時(shí)程序中的k值不同。有多少個(gè)k值呢?可得
N=1+(終值-初值)/增量
【例2-4-4】用for語(yǔ)句求三角函數(shù)表的程序?yàn)閏lcclearforx=0:0.1:pi/4disp([x,sin(x),cos(x),tan(x)])end目前三十一頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)所得的結(jié)果將和2.3節(jié)中的答案相同。這也可以看出,MATLAB的元素群運(yùn)算功能與一個(gè)for循環(huán)相當(dāng)。由于它不需每次檢驗(yàn)表達(dá)式,因此運(yùn)算速度比f(wàn)or語(yǔ)句快得多。但是不能認(rèn)為它可全部取代for語(yǔ)句,由下例可以看出。目前三十二頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)
【例2-4-5】列出構(gòu)成hilbert矩陣的程序,它需要兩重循環(huán):clcclearn=input('n='),formatrat%有理數(shù)形式fori=1:n,forj=1:n,h(i,j)=1/(i+j-1);end,end,h執(zhí)行時(shí),先按提示輸入n,比如輸入5,結(jié)果為
h=11/21/31/41/5 1/21/31/41/51/6 1/31/41/51/61/7 1/41/51/61/71/8 1/51/61/71/81/9目前三十三頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)目前三十四頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)
formatrat,n=input('n='),fori=1:nforj=1:nh(i,j)=1/(i+j-1);endendh為改善可讀性用縮進(jìn)方法。結(jié)果和上一結(jié)果相同,如本例中應(yīng)寫(xiě)成:目前三十五頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)由于我們現(xiàn)在是在MATLAB命令窗中直接輸入程序,因此不得不把它寫(xiě)在一行中。此時(shí)要注意,在if、for、while與表達(dá)式之間應(yīng)留空格,在表達(dá)式與語(yǔ)句組之間必須用空格或逗號(hào)分隔,而在語(yǔ)句組的后面,必須要用逗號(hào)或分號(hào)來(lái)與end或else相分隔,否則,MATLAB會(huì)顯示出錯(cuò)信息并中止運(yùn)行。
break是中止循環(huán)的命令,在循環(huán)語(yǔ)句中,可用它在一定條件下跳出循環(huán),這是常常用到的。在多重循環(huán)中,break只能使程序跳出包含它的最內(nèi)部的那個(gè)循環(huán)。目前三十六頁(yè)\總數(shù)四十頁(yè)\編于七點(diǎn)
4.switch語(yǔ)句
switch-case-otherwise語(yǔ)句
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TR 18228-5:2025 EN Design using geosynthetics - Part 5: Stabilization
- 2025年度廢電池?zé)o害化處理承包服務(wù)
- 2025年度皮草產(chǎn)品售后服務(wù)合同范本
- The 2025 Optimove Insights消費(fèi)者營(yíng)銷(xiāo)疲勞報(bào)告
- 2025年度房地產(chǎn)市場(chǎng)動(dòng)態(tài)監(jiān)測(cè)評(píng)估合同
- 2025年圖形、圖象處理設(shè)備項(xiàng)目建議書(shū)
- 2025年度二手車(chē)交易居間服務(wù)合同范本
- 2025年度大型體育賽事贊助商權(quán)益轉(zhuǎn)讓合同
- 2025年度企業(yè)安全協(xié)管員崗位職責(zé)合同
- 2025年度離婚后債務(wù)分配與財(cái)產(chǎn)分割協(xié)議書(shū)
- 新教材人教版高中數(shù)學(xué)必修第二冊(cè)全冊(cè)教案
- 班(組)戰(zhàn)斗動(dòng)作訓(xùn)練教案
- 農(nóng)產(chǎn)品電商運(yùn)營(yíng)-完整全套課件
- 唐河縣泌陽(yáng)凹陷郭橋天然堿礦產(chǎn)資源開(kāi)采與生態(tài)修復(fù)方案
- CBCC中國(guó)建筑色卡色
- 科研項(xiàng)目匯報(bào)ppt
- “不作為、慢作為、亂作為”自查自糾報(bào)告范文(三篇)
- 上海市楊浦區(qū)2022屆初三中考二模英語(yǔ)試卷+答案
- 公共事業(yè)管理案例
- 光伏電站小EPC合同模版
- GB 9706.202-2021醫(yī)用電氣設(shè)備第2-2部分:高頻手術(shù)設(shè)備及高頻附件的基本安全和基本性能專(zhuān)用要求
評(píng)論
0/150
提交評(píng)論