版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第3章MATLAB程序設(shè)計(jì)2本章學(xué)習(xí)內(nèi)容M文件的基本知識(shí)程序控制結(jié)構(gòu)函數(shù)式M文件程序調(diào)試3本章學(xué)習(xí)目標(biāo)掌握M文件的基本知識(shí)掌握Matlab常用的程序控制結(jié)構(gòu)掌握函數(shù)式M文件的編寫和調(diào)用方法掌握M文件編輯器的使用方法了解Matlab中函數(shù)參數(shù)的可調(diào)性了解Matlab程序調(diào)試方法4什么是M文件M文件的分類M文件的編輯與運(yùn)行1.M文件的基本知識(shí)nextpartgogo5M文件的分類return(1)命令式M文件(ScriptFile)(2)函數(shù)式M文件(FunctionFile)examplereturn例3-1將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c。(教材P57)clear;%清除工作空間中的變量clc;f=input('InputFahrenheittemperature:');c=5*(f-32)/9命令式M文件ex3_1.mfunctionc=f2c(f)c=5*(f-32)/9函數(shù)式M文件f2c.m7M文件的編輯與運(yùn)行return(1)M文件的編輯:Matlab文本編輯器(默認(rèn))(2)M文件的運(yùn)行:命令式M文件——直接在文本編輯器中運(yùn)行或以調(diào)用方式運(yùn)行函數(shù)式M文件——若無(wú)輸入?yún)?shù),可直接運(yùn)行或以調(diào)用方式運(yùn)行
若有輸入?yún)?shù),需要以調(diào)用方式運(yùn)行8順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)2.程序控制結(jié)構(gòu)nextpartgogogo應(yīng)用實(shí)例分析return順序結(jié)構(gòu)編程實(shí)例:求一元二次方程ax2+bx+c=0的根。
(教材P60例3-3)a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);[通過(guò)幫助自學(xué)]input(),disp()的用法10return選擇結(jié)構(gòu)(1)if語(yǔ)句(2)switch語(yǔ)句(3)try語(yǔ)句gogogo(1)if語(yǔ)句if
條件語(yǔ)句組endif
條件語(yǔ)句組1else
語(yǔ)句組2endif
條件1
語(yǔ)句組1elseif
表達(dá)式2
語(yǔ)句組2elseif
表達(dá)式3
語(yǔ)句組3elseif……else
語(yǔ)句組nendexamplereturnreturn%該函數(shù)用于判斷某一年是否為閏年%使用格式為isleapyear(y),其中y是用戶所要計(jì)算的年份functionisleapyear(year)sign=0;if
rem(year,4)==0&rem(year,100)~=0|rem(year,400)==0sign=1;end
ifsign==1
fprintf('%4dyearisaleapyear.\n',year)else
fprintf('%4dyearisnotaleapyear.\n',year)endif語(yǔ)句編程實(shí)例:isleapyear.mreturn(2)switch語(yǔ)句switch
表達(dá)式
case
值1
語(yǔ)句組1
case值2
語(yǔ)句組2
case
值3
語(yǔ)句組3……
otherwise
語(yǔ)句組nendexamplereturnswitch語(yǔ)句編程實(shí)例:ex_switch.mscore=input('pleaseinputyourscore:\n');switch
fix(score/10)
case
{9,10}disp('excellent.');case
8disp('good.');
case
7disp('okay.');
case
6disp('pass.');case
num2cell(5:-1:0)disp('fail.');
otherwisedisp('inputerror.');end注意寫法!switch
表達(dá)式
case
值1
語(yǔ)句組1
case值2
語(yǔ)句組2
case
值3
語(yǔ)句組3……
otherwise
語(yǔ)句組nendreturn(3)try語(yǔ)句try
語(yǔ)句組1catch
語(yǔ)句組2endexample語(yǔ)義:先試探性執(zhí)行語(yǔ)句組1,若執(zhí)行過(guò)程中有錯(cuò)誤,則將錯(cuò)誤信息→lasterr,轉(zhuǎn)而執(zhí)行語(yǔ)句組2。returnA=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr
try語(yǔ)句編程實(shí)例:ex3_7.m17return循環(huán)結(jié)構(gòu)(1)for語(yǔ)句(2)while語(yǔ)句(3)break語(yǔ)句和continue語(yǔ)句(4)循環(huán)的嵌套gogogo(1)for語(yǔ)句returnfor循環(huán)變量=初值:步長(zhǎng):終值循環(huán)體語(yǔ)句endfor
循環(huán)變量=矩陣表達(dá)式循環(huán)體語(yǔ)句endexampleexamplereturn例3-9當(dāng)n=100時(shí),求y的值(教材P66)y=0;n=100;fori=1:ny=y+1/(2*i-1);endyn=100;i=1:2:2*n-1;y=sum(1./i)說(shuō)明:
在實(shí)際的matlab編程中,采用循環(huán)語(yǔ)句或降低其執(zhí)行速度,所以,通常會(huì)借助矩陣來(lái)替代循環(huán)。for循環(huán)變量=初值:步長(zhǎng):終值循環(huán)體語(yǔ)句endreturns=0;a=[123136311];fork=as=s+k;endass=0;a=[123136311];s=sum(a,2)as執(zhí)行過(guò)程:依次取出矩陣的第i列元素給循環(huán)變量,然后執(zhí)行循環(huán)體語(yǔ)句。(2)while語(yǔ)句returnwhile
條件 循環(huán)體語(yǔ)句end
examplenotselected=[5,8,25,33,34,39,42,43,44,45,46,48,51,56,57,60];%未選修的學(xué)生學(xué)號(hào)fori=1:5no(i)=unidrnd(65);
whileany(no(i)==notselected) no(i)=unidrnd(65);
endend從學(xué)號(hào)1~65中任意抽取5個(gè),不能是未選修的學(xué)號(hào)returnreturn(3)break語(yǔ)句和continue語(yǔ)句x=1:10;y=1:10;figure(1);axis([110110]);holdonfori=1:10
if(rem(i,3)==0)plot(x(i),y(i),'r*','linewidth',2)
continue
endplot(x(i),y(i),'bo','linewidth',2)pause(1)endholdoffnotselected=[5,8,25,33,34,39,42,43,44,4546,51,56,57,60];%未選修的學(xué)生學(xué)號(hào)
fori=1:5no(i)=unidrnd(65);
if(i>1)rolled=no(1:i-1);end
whileany(no(i)==notselected)|(i>1&any(no(i)==rolled))no(i)=unidrnd(65);endendno應(yīng)用實(shí)例:從已選修名單中抽取5位學(xué)生學(xué)號(hào),且不能重復(fù)抽取return253.函數(shù)式M文件函數(shù)式M文件的基本結(jié)構(gòu)函數(shù)式M文件的調(diào)用函數(shù)參數(shù)的可調(diào)性全局變量與局部變量nextpartgogogo(自學(xué))26(1)函數(shù)式M文件示例(2)函數(shù)式M文件的語(yǔ)法結(jié)構(gòu)函數(shù)式M文件的基本結(jié)構(gòu)returngogo(1)函數(shù)式M文件示例nextfunctionc=f2c(f)c=5*(f-32)/9f2c.m引導(dǎo)行/定義行函數(shù)體returnfunctions=sum(A,dim)%SUMSumoftheelements.%Forvectors,SUM(X)isthesumoftheelementsofX.%Formatrices,SUM(X)orSUM(X,1)isarowvectorofcolumnsums%andSUM(X,2)isacolumnvectorofrowsums.%%SeealsoPROD.
%Copyright1993-2002TheMathWorks,Inc.%$Revision:1.9$$Date:2002/04/1503:07:07$ifnargin==1&any(size(A)==1)s=sym(0);fork=1:prod(size(A))s=s+A(k);endelseifnargin==1|dim==1s=sym(zeros(1,size(A,2)));fori=1:size(A,1)s=s+A(i,:);endelses=sym(zeros(size(A,1),1));forj=1:size(A,2);s=s+A(:,j);endend注釋函數(shù)體引導(dǎo)行functions=sum(A,dim)ifnargin==1&any(size(A)==1)s=sym(0);fork=1:prod(size(A))s=s+A(k);endelseifnargin==1|dim==1s=sym(zeros(1,size(A,2)));fori=1:size(A,1)s=s+A(i,:);endelses=sym(zeros(size(A,1),1));forj=1:size(A,2);s=s+A(:,j);endend引導(dǎo)行/定義行函數(shù)體%SUMSumoftheelements.%Forvectors,SUM(X)isthesumoftheelementsofX.%Formatrices,SUM(X)orSUM(X,1)isarowvectorofcolumnsums%andSUM(X,2)isacolumnvectorofrowsums.%%SeealsoPROD.
%Copyright1993-2002TheMathWorks,Inc.%$Revision:1.9$$Date:2002/04/1503:07:07$①②③sum.m(2)函數(shù)式M文件的語(yǔ)法結(jié)構(gòu)returnfunction
輸出形參表=函數(shù)名(輸入形參表)注釋說(shuō)明部分函數(shù)體部分說(shuō)明:①輸入?yún)?shù):若有多個(gè),用逗號(hào)間隔②輸出參數(shù):可以沒(méi)有;若有多個(gè),參數(shù)之間用逗號(hào)間隔且輸出形參表用[]括起來(lái)。③函數(shù)體中可以有return語(yǔ)句,也可以沒(méi)有functionc=f2c(f)c=5*(f-32)/930函數(shù)式M文件的調(diào)用return[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)說(shuō)明:可嵌套調(diào)用,也可遞歸調(diào)用!examplereturnfcircle.mfunction[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圓半徑%s圓面積%p圓周長(zhǎng)
%2009年10月15日編s=pi*r*r;p=2*pi*r;>>[area,perimeter]=fcircle(10)area=314.1593perimeter=62.831932函數(shù)參數(shù)的可調(diào)性returnMATLAB中,傳遞給函數(shù)的輸入?yún)?shù)和輸出參數(shù)可變。系統(tǒng)用預(yù)定義變量nargin和nargout分別記錄調(diào)用時(shí)實(shí)際的輸入?yún)?shù)和輸出參數(shù)個(gè)數(shù)。examplereturnfunctionM=myrand10(m,n)ifnargin==0M=unidrnd(10);elseifnargin==1M=unidrnd(10,m,m);elseM=unidrnd(10,m,n);end①編寫函數(shù)式文件myrand10.m②在命令窗口或其它M文件中調(diào)用>>A=myrand10;>>B=myrand10(2);>>C=myrand10(2,3);344.程序調(diào)試nextpart1.程序錯(cuò)誤:①語(yǔ)法錯(cuò)誤②邏輯錯(cuò)誤2.程序調(diào)試方法:①通過(guò)注釋,一段一段執(zhí)行程序;在命令窗口輸出中間結(jié)果;②通過(guò)調(diào)試菜單debug調(diào)試(自行練習(xí))355.補(bǔ)充:常用的程序控制命令nextpart命令功能命令功能return返回key
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年陜西中醫(yī)藥大學(xué)第二附屬醫(yī)院博士研究生公開(kāi)招聘25人備考題庫(kù)及答案詳解一套
- 2025年江門市新會(huì)美麗鄉(xiāng)村投資開(kāi)發(fā)有限公司招聘?jìng)淇碱}庫(kù)及1套完整答案詳解
- 2025年廣東省廣業(yè)檢驗(yàn)檢測(cè)集團(tuán)有限公司面向社會(huì)招聘黨群人力部(董事會(huì)辦公室)董辦經(jīng)理備考題庫(kù)附答案詳解
- 西充縣人力資源和社會(huì)保障局西充縣2025年下半年部分縣級(jí)事業(yè)單位公開(kāi)考調(diào)工作人員備考題庫(kù)及參考答案詳解
- 2025年仙居二模數(shù)學(xué)試卷及答案
- 專業(yè)英語(yǔ)考試試卷及答案
- 淄博市統(tǒng)考生物試卷及答案
- 昆明石瀘高速公路開(kāi)發(fā)有限公司2025年生產(chǎn)(工勤)崗招聘8人備考題庫(kù)及1套參考答案詳解
- 包頭初中生物試卷及答案
- 2025年中山市東鳳鎮(zhèn)吉昌幼兒園招聘?jìng)淇碱}庫(kù)及答案詳解參考
- 2024年網(wǎng)絡(luò)與信息安全管理員職業(yè)技能等級(jí)認(rèn)定考試(含答案解析)
- 壓鑄銷售年終述職報(bào)告
- 輸血科主任任職述職報(bào)告
- 2026年江西電力職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 2025 初中生物顯性性狀與隱性性狀課件
- 設(shè)備壽命評(píng)價(jià)與定期驗(yàn)收標(biāo)準(zhǔn)
- 舊建筑外立面改造方案
- 2025年P(guān)MP考試模擬題及解析
- 勵(lì)磁系統(tǒng)改造施工方案
- DB65T 3558-2013 多浪羊飼養(yǎng)管理技術(shù)規(guī)程
- 大型商場(chǎng)開(kāi)業(yè)保安安保執(zhí)行方案模板
評(píng)論
0/150
提交評(píng)論