




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第3章MATLAB程序設計本章要點M文件的概念與基本操作
MATLAB程序控制結(jié)構
MATLAB函數(shù)文件
MATLAB程序調(diào)試3.1M文件的概念與基本操作一、Matlab命令的執(zhí)行方式:交互式逐條輸入,逐條執(zhí)行,操作簡單、直觀,但速度慢,執(zhí)行過程不能保留。程序式將命令編成程序存儲在一個文件中(M文件),依次運行文件中的命令,可以重復進行。3.1M文件的概念與基本操作二、M文件及其分類1、M文件:用Matlab語言編寫的程序;用于完成某些操作,或?qū)崿F(xiàn)某種算法;其擴展名為.m2、M文件的分類:命令文件(ScriptFile)函數(shù)文件(FunctionFile)3.1M文件的概念與基本操作二、M文件及其分類3、命令文件和函數(shù)文件的區(qū)別:命令文件沒有輸入?yún)?shù),也不返回輸出參數(shù);函數(shù)文件可以帶輸入?yún)?shù),也可以返回輸出參數(shù)。命令文件對工作空間中的變量進行操作,文件中所有命令的執(zhí)行結(jié)果也返回工作空間中;函數(shù)文件中定義的變量為局部變量,當函數(shù)文件執(zhí)行完畢時,這些變量也被清除。命令文件可以直接運行;函數(shù)文件不能直接運行,要以函數(shù)調(diào)用的方式來調(diào)用它。3.1M文件的概念與基本操作二、M文件及其分類4、M文件的建立(啟動matlab文本編輯器):方法1:菜單:File-----New-----M-file方法2:命令窗口:edit[文件名]方法3:工具按鈕:NewM-file5、M文件的打開:方法1:菜單:File-----Open-----M-file方法2:命令窗口:edit文件名方法3:工具按鈕:OpenFile方法4:當前文件夾窗口:雙擊文件名3.1M文件的概念與基本操作二、M文件及其分類6、M文件示例:(注意比較兩種文件的不同點)有變量a和b,請編程交換這兩個變量的值%exam_s.m,命令文件c=a;a=b;b=c;%exam_f.m,函數(shù)文件function[a,b]=exam_f(a,b)c=a;a=b;b=c;end兩種文件比較的重點:輔助變量c程序通用性,即參數(shù)可否改變可否攜帶返回值3.1M文件的概念與基本操作二、M文件及其分類7、練習:已知圓的半徑為r,編程求其周長、面積、體積若有2個整數(shù)a和b,編程實現(xiàn)生成5階元素值在[a,b]區(qū)間的均勻隨機整數(shù)矩陣已定義兩個字符串s1和s2,編程將s1和s2連接,并在中間插入10個*,結(jié)果存放在s3中。輸入一個5階魔方陣,輸出其中不能被3或5整除的元素已知一個3位的整數(shù),編程求出個、十、百位的值,并將其反序重新生成一整數(shù),如368變成8633.1M文件的概念與基本操作二、M文件及其分類7、練習(參考程序):%exam1.m圓周長面積function[l,s,v]=exam1(r)l=2*pi.*r;s=pi.*r.*r;v=4/3*pi.*r.^3;end%exam2.m隨機整數(shù)矩陣function[x]=exam2(a,b)x=fix(a+b*rand(5));end3.1M文件的概念與基本操作二、M文件及其分類7、練習(程序參考):%exam3.m字符串連接function[str]=exam3(a,b)s='**********';str=[a,s,b];end%exam4.m整除判斷function[v]=exam4(a)v=a(~(rem(a,3)==0|rem(a,5)==0));end3.1M文件的概念與基本操作二、M文件及其分類7、練習(程序參考):%exam5.m整數(shù)翻轉(zhuǎn)function[y]=exam5(x)a=fix(x/100);b=rem(fix(x/10),10);c=rem(x,10);y=c*100+b*10+a;end本章要點M文件的概念與基本操作
MATLAB程序控制結(jié)構
MATLAB函數(shù)文件
MATLAB程序調(diào)試3.2MATLAB程序控制結(jié)構任何復雜的程序都可以由以下3種基本結(jié)構構成:順序結(jié)構選擇結(jié)構循環(huán)結(jié)構
3.2MATLAB程序控制結(jié)構一、順序結(jié)構1、執(zhí)行流程:
2、控制語句:輸入語句輸出語句數(shù)據(jù)的計算、處理、賦值等
3.2MATLAB程序控制結(jié)構一、順序結(jié)構2、控制語句:(1)輸入語句A=input('提示信息',選項)(2)輸出語句disp(輸出項)
3.2MATLAB程序控制結(jié)構一、順序結(jié)構3、程序示例:(1)編寫程序?qū)崿F(xiàn):從鍵盤輸入一個整數(shù)數(shù)組(0-127),輸出以該整數(shù)為ASCII值的字符(2)從鍵盤輸入一個字符串,輸出該字符串的長度(3)輸出1-10的平方、立方表(4)從鍵盤輸入某個同學的姓名,輸出一個問候:**你好(5)將3.1節(jié)的練習題中的輸入?yún)?shù)改成從鍵盤輸入
3.2MATLAB程序控制結(jié)構一、順序結(jié)構3、程序示例(參考程序):%exam1.m數(shù)值轉(zhuǎn)字符function[ch]=exam1()x=input('pleaseinputanintegerarray:');ch=char(x);disp(ch)end%exam2.m求串長function[n]=exam2()str=input('pleaseinputanstring:');n=length(str);disp(['thelengthofyourstringis',num2str(n)])end3.2MATLAB程序控制結(jié)構一、順序結(jié)構3、程序示例(參考程序):%exam3.m平方立方表x=1:10;x=x';y=[x,x.^2,x.^3];disp('xx^2x^3')disp(y)%exam4.m問候name=input('yourname:','s');str=[name,'你好!'];disp(str)3.2MATLAB程序控制結(jié)構二、選擇結(jié)構1、基本形式:單分支、雙分支、多分支3.2MATLAB程序控制結(jié)構二、選擇結(jié)構2、控制語句:(1)if語句(單分支)(2)if-else語句(雙分支)(3)if-elseif語句(多分支)(4)switch-case語句(多分支)(5)try-catch語句(異常處理)3.2MATLAB程序控制結(jié)構二、選擇結(jié)構2、控制語句:(1)if語句語句格式:if條件語句組end……執(zhí)行過程:當條件成立時,則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句的后繼語句,若條件不成立,則直接執(zhí)行end語句的后繼語句。3.2MATLAB程序控制結(jié)構%參考程序n=input('inputaninteger:');ifrem(n,2)==0str=['isanevennumber'];str=[num2str(n)str];disp(str)end思考練習:輸入三個數(shù)給a、b、c,編寫程序?qū)⑦@三個變量按由小到大排序。例:輸入一整數(shù),若該數(shù)為偶數(shù)則輸出相關信息3.2MATLAB程序控制結(jié)構二、選擇結(jié)構2、控制語句:(2)if-else語句語句格式:if條件語句組1else語句組2end執(zhí)行過程:當條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。3.2MATLAB程序控制結(jié)構%參考程序functionexam(n)str1='isanevennumber';str2='isanoddnumber';ifrem(n,2)==0disp([num2str(n)str1])elsedisp([num2str(n)str2])endend例:判斷某個整數(shù)是奇數(shù)還是偶數(shù)。3.2MATLAB程序控制結(jié)構二、選擇結(jié)構2、控制語句:(2)if-else語句練習:從鍵盤輸入兩個數(shù),輸出其中較大的數(shù)從鍵盤輸入一個數(shù)給x,判斷x是否為整數(shù)從鍵盤輸入一個數(shù)給x,判斷x能否被3整除從鍵盤輸入一個數(shù)給x,判斷x是否為水仙花數(shù)從鍵盤輸入三個數(shù)給a、b、c,判斷可否構成三角形判斷x是否為大、小寫字符、數(shù)字字符等3.2MATLAB程序控制結(jié)構二、選擇結(jié)構2、控制語句:(2)if-elseif語句語句格式:if條件1
語句組1elseif條件2
語句組2……elseif條件m
語句組melse
語句組nend3.2MATLAB程序控制結(jié)構例:編寫程序?qū)W生成績從分數(shù)轉(zhuǎn)成等級:90分以上為A80-90為B70-80為C60-70為D60以下為E%參考程序functionlevel=exam(score)ifscore>=90level='A';elseifscore>=80level='B';elseifscore>=70level='C';elseifscore>=60level='D';elselevel='E';endend3.2MATLAB程序控制結(jié)構二、選擇結(jié)構2、控制語句:(4)switch-case語句語句格式:switch表達式
case表達式1
語句組1……case表達式m
語句組motherwise
語句組nend執(zhí)行過程:當表達式的值等于表達式1的值時,執(zhí)行語句組1……,當表達式的值等于表達式m的值時,執(zhí)行語句組m當表達式的值不等于case所列的表達式的值時,執(zhí)行語句組n當任意一個分支的語句執(zhí)行完后,直接執(zhí)行switch語句的下一句。3.2MATLAB程序控制結(jié)構例1:輸入數(shù)字,輸出對應的人民幣大寫%參考程序functionRMB=exam(rmb)switchrmbcase0RMB='零';
case1RMB='壹';
case2RMB='貳';
case3RMB='叁';
case4RMB='肆';
case
5RMB='伍';
case6RMB='陸';
case7RMB='柒';
case8RMB='捌';
case9RMB='玖';
case
10RMB='拾';endend3.2MATLAB程序控制結(jié)構%參考程序functiongrade=exam(score)switchfix(score/10)
case{0,1,2,3,4,5}grade='E';
case6grade='D';
case7grade='C';
case8grade='B';
case{9,10}grade='A';endend例2:學生成績百分制轉(zhuǎn)等級制3.2MATLAB程序控制結(jié)構二、選擇結(jié)構2、控制語句:(4)switch-case語句練習:1、某商場對顧客所購買的商品實行打折,標準如下:Price<200沒有折扣200<=price<5003%折扣500<=price<10005%折扣1000<=price8%折扣輸入所售商品價格,求其折扣后實際價格。price=input(‘請輸入商品價格:’);switchfix(price/100)
case{01}rate=0;
case{2,3,4}rate=3/100;
case{5,6,7,8,9}rate=5/100;otherwiserate=10/100;endprice=price*(1-rate)3.2MATLAB程序控制結(jié)構二、選擇結(jié)構2、控制語句:(5)try-catch語句語句格式:try
語句組1catch
語句組2end執(zhí)行過程:try語句先試探性執(zhí)行語句組1,如果語句組1在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給保留的lasterr變量,并轉(zhuǎn)去執(zhí)行語句組2。3.2MATLAB程序控制結(jié)構例:矩陣乘法運算要求兩矩陣的維數(shù)相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉(zhuǎn)去求兩矩陣的點乘。%參考程序functionc=exam(a,b)tryc=a*b;catchc=a.*b;end%lasterrend3.2MATLAB程序控制結(jié)構三、循環(huán)結(jié)構1、控制語句:(1)for語句(2)while語句(3)break語句和continue語句(4)循環(huán)結(jié)構的嵌套3.2MATLAB程序控制結(jié)構(1)for語句格式:for
循環(huán)變量=表達式1:表達式2:表達式3
循環(huán)體語句end說明:表達式1的值為循環(huán)變量的初值表達式2的值為步長表達式3的值為循環(huán)變量的終值步長為1時,表達式2可以省略。3.2MATLAB程序控制結(jié)構例1:求1+2+3+……+100練習1,求1+1/2+1/3+…+1/100練習2,求1+3+5+…+99練習3,求1/(1*2)+1/(2*3)+…+1/(n*(n+1))練習4,求1*2*3*…*10練習5,求1-2+3-4…-100sum=0;fori=1:100sum=sum+i;enddisp(['sum='num2str(sum)])3.2MATLAB程序控制結(jié)構例2:fibonacci數(shù)列為:f1=1,f2=1,fn=fn-1+fn-2(n>2)編程求該數(shù)列的前n項。%參考程序functionf=exam(n)f=[];f(1)=1;f(2)=1;fori=3:nf(i)=f(i-1)+f(i-2);end3.2MATLAB程序控制結(jié)構例3:輸出n個星號%參考程序functionexam(n)t=[];forj=1:nt=[t,'*'];enddisp(t)3.2MATLAB程序控制結(jié)構(2)while語句格式:while(條件表達式)
循環(huán)體語句end說明:若條件表達式成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。3.2MATLAB程序控制結(jié)構例1:用π/4≈1-1/3+1/5-1/7+…公式求π的值,直到某一項的絕對值小于1e-6functionPi=exam()sum=1;t=-1;n=3;while1/n>=1e-6sum=sum+t/n;n=n+2;t=-t;endPi=sum*4;end3.2MATLAB程序控制結(jié)構例2:輸入若干個正整數(shù),輸入值為零時結(jié)束,統(tǒng)計其中偶數(shù)的個數(shù)x=input('Enteranumber(endin0):');n=0;whilex~=0ifrem(x,2)==0n=n+1;endx=input('inputanumber');enddisp(n);3.2MATLAB程序控制結(jié)構(3)break語句和continue語句說明:用于與循環(huán)結(jié)構相關的語句中,一般與if語句配合使用。break語句用于終止循環(huán)的執(zhí)行。當在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句。continue語句控制跳過循環(huán)體中的某些語句。當在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻^循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。3.2MATLAB程序控制結(jié)構例1:輸入若干個正整數(shù),輸入值為零時結(jié)束,統(tǒng)計其中偶數(shù)的個數(shù)n=0;while1x=input('Enteranumber(endin0):');ifx==0
break;
endifrem(x,2)==0n=n+1;endenddisp(n);3.2MATLAB程序控制結(jié)構例2:輸入一個正整數(shù),判斷其是否為素數(shù)?functiontf=exam(x)flag=1;fori=2:x-1
ifrem(x,i)==0flag=0;
break;
endendifflag==1tf=1;elsetf=0;endend3.2MATLAB程序控制結(jié)構例3:將0~100之間不能被3整除的數(shù)輸出t=[];fori=0:100
ifrem(i,3)==0
continue;
endt=[t,i];enddisp(t)3.2MATLAB程序控制結(jié)構(4)循環(huán)嵌套一個循環(huán)體內(nèi)包含另一個完整的循環(huán)結(jié)構%參考程序fori=1:6t='';
forj=1:10t=[t,'*'];
enddisp(t)end例:打印以下圖形************************************************************本章要點M文件的概念與基本操作
MATLAB程序控制結(jié)構
MATLAB函數(shù)文件
MATLAB程序調(diào)試3.3MATLAB函數(shù)文件函數(shù)文件由function語句引導,基本格式為Function輸出參數(shù)表=函數(shù)名(輸入?yún)?shù)表)注釋說明部分函數(shù)語句End函數(shù)文件名通常由函數(shù)名加上擴展名.m組成;3.3MATLAB函數(shù)文件函數(shù)調(diào)用函數(shù)文件編制好后,可以通過調(diào)用函數(shù)的方式進行計算,函數(shù)調(diào)用的一般格式為:[輸出參數(shù)表]=函數(shù)名(輸入?yún)?shù))在matlab中,函數(shù)可以嵌套調(diào)用,即:一個函數(shù)可以調(diào)用其它函數(shù),甚至調(diào)用它自身,一個函數(shù)調(diào)用它自身稱為函數(shù)的遞歸調(diào)用。3.3MATLAB函數(shù)文件例:利用函數(shù)的遞歸調(diào)用求n!解:n!本身就是以遞歸形式定義的,即:如果n<=1,則n!=1,否則,n!=n*(n-1)!。
函數(shù)文件程序如下:functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n%遞歸調(diào)用end本章要點M文件的概念與基本操作
MATLAB程序控制結(jié)構
MATLAB函數(shù)文件
MATLAB程序調(diào)試3.4MATLAB程序調(diào)試一般來說,應用程序的錯誤有兩類,一種是語法錯誤,一種是運行錯誤。語法錯誤:主要指詞法或文法錯誤,如函數(shù)名的拼寫錯誤,表達式書寫錯誤等。Matlab能夠檢查出大部分語法錯誤。運行錯誤:主要指程序運行結(jié)果的錯誤,也稱邏輯錯誤。Matlab無法檢查邏輯錯誤,不會給出任何錯誤信息,這時可以通過程序調(diào)試的手段發(fā)現(xiàn)程序中的邏輯錯誤。3.4MATLAB程序調(diào)試程序調(diào)試最常見的方法是通過獲取中間結(jié)果的方式來獲得錯誤可能發(fā)生的程序段,以便進一步分析錯誤的原因:1,將程序的一些主要中間結(jié)果輸出到命令窗口,從而確定錯誤片段。2,使用matlab的調(diào)試菜單,通過圖形界面實現(xiàn)程序調(diào)試。3,利用命令操作方式實現(xiàn)程序調(diào)試。3.4MATLAB程序調(diào)試例:求1+2+…+100正確:
i=1;sum=0;whilei<=100sum=sum+i;i=i+1;
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45222-2025食品安全事故應急演練要求
- 上下鋪銷售合同范本
- 臨汾購房合同范本
- 2025年寧夏貨運從業(yè)資格證模擬考
- 勞務派人員合同范本
- 代理經(jīng)紀服務合同范本
- 農(nóng)村水電改造施工合同范本
- 修房勞動安全合同范本
- 醬菜批發(fā)合同范本
- 包租協(xié)議合同范例
- 智慧工廠計劃總結(jié)匯報
- 小學信息科技五年級下冊 教案 1-3“數(shù)學計算小能手”單元教學設計
- 醫(yī)療器械經(jīng)營基礎知識培訓合規(guī)指南
- 小學數(shù)學(含奧數(shù))數(shù)圖形個數(shù)和找規(guī)律、簡便運算專項及練習題附答案
- 新產(chǎn)品研發(fā)(開發(fā))項目管理培訓教材
- 課堂-可以這么有聲有色
- Android Studio開發(fā)實戰(zhàn)(從零基礎到App上線)
- 布草類送洗記錄表
- 藥物警戒培訓
- 中央民族大學 學生休學申請表
- 哈薩克斯坦勞動法中文版
評論
0/150
提交評論