




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章MATLAB基本程序設(shè)計(jì)
MATLAB程序設(shè)計(jì)方式:■草稿紙方式(命令行方式)■基本程序設(shè)計(jì)(結(jié)構(gòu)程序設(shè)計(jì))■圖形界面程序設(shè)計(jì)(面向?qū)ο螅㎝ATLAB基本程序設(shè)計(jì)要點(diǎn):■MATLAB的程序文件名以m作為擴(kuò)展名■通過Edit命令進(jìn)入m文件的編輯
■一個(gè)完整的應(yīng)用程序由主程序和函數(shù)組成第5章MATLAB基本程序設(shè)計(jì)
主要內(nèi)容(5)■M文件■輸入輸出語句■程序控制語句■程序的調(diào)試5.1M文件一、主程序(腳本)1、一個(gè)主程序的例子編寫一個(gè)雙音頻程序,顯示某個(gè)鍵的波形:(Hz)120913361477697123770456852789941*0#5.1M文件設(shè)主程序文件名為mydt.m%產(chǎn)生一個(gè)雙音頻
fs=8000;t=(0:1/fs:0.2);f1=697;f2=1209;%鍵1對(duì)應(yīng)的兩個(gè)頻率y=sin(2*pi*f1*t)+sin(2*pi*f2*t);plot(t,y);wavplay(y,fs)5.1M文件2、主程序的組成▓幫助段(帶注釋符%的行)▓程序段
如果有第一行(function),則主程序?yàn)楹瘮?shù)文件形式
,變量不保存到工作區(qū)中,為局部變量.
如果沒有第一行(function),則主程序?yàn)槊钗募问?,相?dāng)于各命令行的集合。變量保存到工作區(qū)中.5.1M文件3、幾點(diǎn)說明▓文件名不能為漢字或數(shù)字開頭▓注釋符%后面的文字不執(zhí)行▓程序的每一行的執(zhí)行相當(dāng)于在命令行執(zhí)行▓一行可以寫多條語句,以‘,’或‘;’隔開;一行寫不下時(shí),以‘…’續(xù)行▓對(duì)于命令文件形式,建議在程序段開始用
clear,closeall等命令清除以前的變量▓對(duì)于函數(shù)文件形式,程序中的所有變量均為局部變量。5.1M文件二、函數(shù)
函數(shù)是用用來定義子程序的。主程序?qū)嶋H上也是一個(gè)函數(shù)(由MATLAB調(diào)用)。1、函數(shù)頭的形式:
function函數(shù)名()(無變量傳遞)function函數(shù)名(var1,var2,…)(無返回值)function[y1,y2,…]=函數(shù)名(var1,var2,…)5.1M文件2、函數(shù)的位置▓函數(shù)可以是一個(gè)單獨(dú)的文件(文件名和函數(shù)名應(yīng)相同)▓函數(shù)也可以放在主程序的后面。
5.1M文件3、舉例根據(jù)t,f1,f2生成雙音頻的函數(shù)functionfy=mydtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);該函數(shù)可以是單獨(dú)文件或在主程序后面。例如:mydt1.m5.1M文件%程序mydt1.m產(chǎn)生一個(gè)雙音頻clc;clearall;fs=8000;t=(0:1/fs:0.2);y=dtones(t,697,1209);%鍵1對(duì)應(yīng)的兩個(gè)頻率plot(t,y);wavplay(y,fs);%函數(shù)functionfy=dtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);5.1M文件%程序文件mydt1.m產(chǎn)生一個(gè)雙音頻clc;clear;closeall;fs=8000;t=(0:1/fs:0.2);y=dtones(t,697,1209);plot(t,y);wavplay(y,fs);%函數(shù)文件dtones.mfunctionfy=dtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);5.1M文件4、全局變量:如果在主程序和函數(shù)中使用同一變量,應(yīng)定義全局變量。globalval1val2…%程序文件mydt2.m產(chǎn)生一個(gè)雙音頻clc;clear;closeall;globaltfsfs=8000;t=(0:1/fs:0.2);y=dtones1(697,1209);plot(t,y);%函數(shù)文件dtones1.mfunctionfy=dtones1(f1,f2)globaltfsfy=sin(2*pi*f1*t)+sin(2*pi*f2*t);wavplay(fy,fs);%程序文件名為mean.mfunctiony=mean(x)%mean求平均值%對(duì)于向量,返回向量x中各元素的平均值%對(duì)于矩陣,返回包含各列元素平均值的行向量[m,n]=size(x);ifm==1m=n;end;y=sum(x)/m;>>helpmeanmean求平均值對(duì)于向量,返回向量x中各元素的平均值對(duì)于矩陣,返回包含各列元素平均值的行向量
例:編寫函數(shù)文件求半徑為r的圓的面積和周長(zhǎng)。函數(shù)文件如下:function[s,p]=fcircle(r)%CIRCLEcalculate%r圓半徑%s圓面積%p圓周長(zhǎng)s=pi*r*r;p=2*pi*r;函數(shù)調(diào)用的一般格式是:
[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)
要注意的是,函數(shù)調(diào)用時(shí)各實(shí)參出現(xiàn)的順序、個(gè)數(shù),應(yīng)與函數(shù)定義時(shí)形參的順序、個(gè)數(shù)一致,否則會(huì)出錯(cuò)。函數(shù)調(diào)用時(shí),先將實(shí)參傳遞給相應(yīng)的形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。例:函數(shù)文件examp.m:functionfout=charray(a,b,c)ifnargin==1fout=a;elseifnargin==2fout=a+b;elseifnargin==3fout=(a*b*c)/2;end
命令文件mydemo.m:x=[1:3];y=[1;2;3];examp(x)examp(x,y')examp(x,y,3)5.2輸入輸出語句(人機(jī)交互)1、屏幕輸入格式:x=input(‘提示符’)----等待輸入數(shù)據(jù)
x=input(‘提示符’,‘s’)----等待輸入字符串
xm=input('What''syourname?','s');
5.2輸入輸出語句(人機(jī)交互)2、菜單命令格式:x=menu(‘標(biāo)題’,‘菜單項(xiàng)1’,菜單項(xiàng)2’,…)返回菜單序號(hào)。例如:x=menu(‘Title’,’Plus’,’Minus’)5.2輸入輸出語句(人機(jī)交互)3、暫停格式:pause------等待敲擊鍵盤
pause(n)-----等待n秒4、交出鍵盤格式:keyboad---程序執(zhí)行到該命令時(shí)暫停,在屏幕上顯示K,這時(shí)用戶可輸入命令,查看中間結(jié)果,輸入return命令,則程序繼續(xù)執(zhí)行5.2輸入輸出語句(人機(jī)交互)5、中止執(zhí)行6、顯示格式:display(x)-----在命令行顯示x的內(nèi)容格式:^C---強(qiáng)行停止程序的執(zhí)行,回到命令行5.2輸入輸出語句(人機(jī)交互)7、打印格式:print---------打印當(dāng)前繪圖print-dbitmap文件名
---------將繪圖轉(zhuǎn)為圖象文件
-djpeg
例:輸入x,y的值,并將它們的值互換后輸出。程序如下:
x=input('Inputxplease.');y=input('Inputyplease.');z=x;x=y;y=z;disp(x);disp(y);例:求一元二次方程ax2+bx+c=0的根。程序如下: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))]);例:分別建立命令文件和函數(shù)文件,將華氏溫度f轉(zhuǎn)換為攝氏溫度c。程序1:首先建立命令文件并以文件名f2c.m存盤。clear;%清除工作空間中的變量f=input('InputFahrenheittemperature:');c=5*(f-32)/9然后在MATLAB的命令窗口中輸入f2c,將會(huì)執(zhí)行該命令文件,執(zhí)行情況為:InputFahrenheittemperature:73c=22.7778程序2:首先建立函數(shù)文件f2c.m。functionc=f2c(f)c=5*(f-32)/9然后在MATLAB的命令窗口調(diào)用該函數(shù)文件。clear;y=input('InputFahrenheittemperature:');x=f2c(y)輸出情況為:InputFahrenheittemperature:70c=21.1111x=21.11115.3程序控制語句任何計(jì)算機(jī)語言都有三種基本結(jié)構(gòu),即:?順序結(jié)構(gòu):無控制語句?分支結(jié)構(gòu):if,switch?循環(huán)結(jié)構(gòu):for,while5.3程序控制語句1、順序結(jié)構(gòu):無控制語句
按照順序從頭至尾地執(zhí)行程序中的各條語句。順序結(jié)構(gòu)一般不包含其他任何子語句或控制語句。例如:n=0:100;x=sin(2*pi*0.01*n);plot(x);holdonstem(x,’r’);grid5.3程序控制語句?分支結(jié)構(gòu):if,switchif和switch語句用于根據(jù)條件選擇執(zhí)行相應(yīng)的語句。1、if語句(適合分支少)if語句根據(jù)邏輯表達(dá)式的值來確定是否執(zhí)行緊接的語句體。常見的調(diào)用格式有:5.3程序控制語句格式1:if表達(dá)式語句
end格式2:if表達(dá)式語句1else
語句2end5.3程序控制語句格式3:
if表達(dá)式1
語句1elseif表達(dá)式2
語句2else
語句3end例如:判斷輸入數(shù)的奇偶性n=input(‘n=’);ifrem(n,2)==0display(‘n是偶數(shù)’)elsedisplay(‘n是奇數(shù)’)end5.3程序控制語句2、switch語句(適合分支多)格式:
switch表達(dá)式(標(biāo)量或表達(dá)式)
case值1
語句1case值2
語句2…otherwise
語句nend5.3程序控制語句switch語句和if語句類似。Switch語句根據(jù)變量或表達(dá)式的取值不同分別執(zhí)行不同的命令。5.3程序控制語句例如:根據(jù)菜單選擇顯示不同的函數(shù)x=menu('波形','正弦','余弦','正切','余切');switchxcase1ezplot('sin')case2ezplot('cos')case3ezplot('tan')case4ezplot('cot')end5.3程序控制語句3、for語句格式:for變量=初值:增量:終值語句
end
例如:求100!
x=1;fork=1:1:100x=x*k;endx例:已知,當(dāng)n=100時(shí),求y的值。程序如下:
y=0;n=100;fori=1:ny=y+1/(2*i-1);endy
在實(shí)際MATLAB編程中,采用循環(huán)語句會(huì)降低其執(zhí)行速度,所以前面的程序通常由下面的程序來代替:
n=100;i=1:2:2*n-1;y=sum(1./i);yfor語句更一般的格式為:
for循環(huán)變量=矩陣表達(dá)式循環(huán)體語句
end執(zhí)行過程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語句,直至各列元素處理完畢。
例:寫出下列程序的執(zhí)行結(jié)果。
s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];
fork=as=s+k;enddisp(s');5.3程序控制語句4、while語句格式:while表達(dá)式語句
end例如:計(jì)算1,…,1000的和x=1;whilex<=1000x=x+1;end表達(dá)式成立(為真)時(shí),一直執(zhí)行語句,否則跳出循環(huán).例如:求Matlab中的最大實(shí)數(shù)。
例:從鍵盤輸入若干個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,求這些數(shù)的平均值和它們之和。程序如下:sum=0;cnt=0;val=input('Enteranumber(endin0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enteranumber(endin0):');endif(cnt>0)summean=sum/cntend5.3程序控制語句5、break和continue語句用于循環(huán)語句(for,while):break:用于跳出循環(huán)continue:跳過后面的語句繼續(xù)循環(huán)5.3程序控制語句例:輸出100到200之間第一個(gè)能被7整除的數(shù)fori=100:200ifrem(i,7)~=0continueendbreakendi循環(huán)的嵌套如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個(gè)循環(huán)結(jié)構(gòu),就稱為循環(huán)的嵌套,或稱為多重循環(huán)結(jié)構(gòu)。
例:若一個(gè)數(shù)等于它的各個(gè)真因子之和,則稱該數(shù)為完數(shù),如6=1+2+3,所以6是完數(shù)。求[1,500]之間的全部完數(shù)。
form=1:500s=0;fork=1:m/2ifrem(m,k)==0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療器械行業(yè)的技術(shù)創(chuàng)新與市場(chǎng)推廣策略
- 上墻酒架轉(zhuǎn)讓合同范例
- 醫(yī)藥營(yíng)銷中的倫理與法律風(fēng)險(xiǎn)控制
- 樂器生產(chǎn)銷售合同范例
- 醫(yī)療與教育行業(yè)的數(shù)字化轉(zhuǎn)型案例分析
- 醫(yī)療大數(shù)據(jù)時(shí)代下的隱私權(quán)保護(hù)策略
- 倉儲(chǔ)保管服務(wù)合同范例
- 2000施工合同范例
- 醫(yī)療領(lǐng)域的數(shù)據(jù)安全新篇章-區(qū)塊鏈技術(shù)的應(yīng)用
- 統(tǒng)計(jì)人員年終工作總結(jié)模版
- 羊水拴塞應(yīng)急演練
- OBE理念下生成式AI技術(shù)在高校財(cái)會(huì)教育中的應(yīng)用路徑研究
- 2024年湖北省中考語文真題(學(xué)生版+解析版)
- 創(chuàng)業(yè)人生學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 古詩詞誦讀《客至》課件+2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊(cè)
- 信號(hào)與系統(tǒng)考試試題及答案
- 中藥材、中藥飲片分類貯存常溫庫貨品名稱目錄
- 2024版腫瘤患者靜脈血栓防治指南解讀
- 2023年高考數(shù)學(xué)試卷(上海)(春考)(空白卷)
- 廣東省廣州市黃埔區(qū)2025屆中考英語試題模擬卷(一)含答案
- 16建筑施工安全檢查要點(diǎn)圖解-施工機(jī)具
評(píng)論
0/150
提交評(píng)論