《第7周小課Matlab程序設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《第7周小課Matlab程序設(shè)計(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Digital Signal Processing教學(xué)內(nèi)容 Matlab程序設(shè)計Digital Signal Processing教學(xué)要求Digital Signal ProcessingMatlab程序設(shè)計 在歐美各高等學(xué)校,Matlab成為線性代數(shù)、自動控制理論、數(shù)字信號處理、時間序列分析、動態(tài)系統(tǒng)仿真、圖像處理等諸多課程的基本教學(xué)工具,成為學(xué)生必須掌握的基本技能。在設(shè)計研究單位和工業(yè)部門,Matlab已被廣泛地用于研究和解決各種具體的工程問題??梢灶A(yù)見,Matlab將在我國科學(xué)研究和工程應(yīng)用中發(fā)揮越來越大的作用。Digital Signal ProcessingMatlab程序設(shè)計v交互
2、式命令執(zhí)行方式(命令窗口)逐條輸入,逐條執(zhí)行,操作簡單、直觀,但速度慢,執(zhí)行過程不能保留。vM文件的程序執(zhí)行方式 將命令編成程序存儲在一個文件中(M文件),依次運行文件中的命令,可以重復(fù)進(jìn)行。vMatlab程序設(shè)計有傳統(tǒng)高級語言的特征,又有自己獨特的特點,可以利用數(shù)據(jù)結(jié)構(gòu)的特點,使程序結(jié)構(gòu)簡單,編程效率高。Digital Signal ProcessingMatlab程序設(shè)計v用Matlab語言編寫的程序,稱為M文件。是由若干Matlab命令組合在一起構(gòu)成的,它可以完成某些操作,也可以實現(xiàn)某種算法。v M文件根據(jù)調(diào)用方式的不同分為兩類:命令文件(Script File)函數(shù)文件(Functio
3、n File)v 它們的擴(kuò)展名都是.mDigital Signal ProcessingMatlab程序設(shè)計v命令文件沒有輸入?yún)?shù),也不返回輸出參數(shù);函數(shù)文件可以帶輸入?yún)?shù),也可以返回輸出參數(shù)。v命令文件對工作空間中的變量進(jìn)行操作,文件中所有命令的執(zhí)行結(jié)果也返回工作空間中;函數(shù)文件中定義的變量為局部變量,當(dāng)函數(shù)文件執(zhí)行完畢時,這些變量也被清除。v命令文件可以直接運行;函數(shù)文件不能直接運行,要以函數(shù)調(diào)用的方式來調(diào)用它。Digital Signal ProcessingMatlab程序設(shè)計(命令文件exch)命令文件:clear;a=1:10;b=11,12,13,14;15,16,17,18;c
4、=a;a=b;b=c;ab將文件保存為exch,并在命令窗口執(zhí)行。執(zhí)行結(jié)果(將a,b的值互換)a=11 12 13 14 15 16 17 18b=1 2 3 4 5 6 7 8 9 10Digital Signal ProcessingMatlab程序設(shè)計(函數(shù)文件)fexch.mfunction a,b=exch(a,b)c=a;a=b;b=c;然后在命令窗口調(diào)用該函數(shù)文件:clear;x=1:10;y=11,12,13,14;15,16,17,18;x,y=fexch(x,y)輸出結(jié)果為:a=11 12 13 14 15 16 17 18b=1 2 3 4 5 6 7 8 9 10函數(shù)參
5、數(shù)a,b,c未保留在工作空間中,x,y保留在工作空間中。Digital Signal ProcessingMatlab程序設(shè)計(M文件)M文件是一個文本文件,可以用任何編輯程序來建立和編輯,一般最常用的是使用Matlab提供的文本編輯器。該編輯器是一個集編輯和調(diào)試于一體的工作環(huán)境。Digital Signal ProcessingMatlab程序設(shè)計(程序控制結(jié)構(gòu))v順序結(jié)構(gòu)v選擇結(jié)構(gòu)v循環(huán)結(jié)構(gòu) 任何復(fù)雜的程序都可以由這3種基本結(jié)構(gòu)構(gòu)成。Digital Signal ProcessingMatlab程序設(shè)計(順序結(jié)構(gòu))v 順序結(jié)構(gòu)是指按照程序中語句的排列順序依次執(zhí)行,直到程序的最后一個語句。(
6、最簡單的一種程序)1、數(shù)據(jù)的輸入 從鍵盤輸入數(shù)據(jù),則可以使用input函數(shù)來進(jìn)行,調(diào)用格式為:A=input(提示信息,選項);其中提示信息為一個字符串,用于提示用戶輸入數(shù)據(jù)。例如:從鍵盤輸入A矩陣,可以采用下面的命令來完成 A=input(輸入A矩陣);如果在input函數(shù)調(diào)用時采用s選項,則允許用戶輸入一個字符串。例:xm=input(Whats your name?,s);Digital Signal ProcessingMatlab程序設(shè)計(順序結(jié)構(gòu))2、數(shù)據(jù)的輸出 命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為:disp(輸出項)其中輸出項既可以為字符串,也可以為矩陣。例如:A=H
7、ello,Tom;disp(A)輸出為:Hello,Tom 又如:A=1,2,3;4,5,6;7,8,9;disp(A)輸出為:1 2 3 4 5 6 7 8 9%disp函數(shù)輸出格式更緊湊Digital Signal ProcessingMatlab程序設(shè)計(順序結(jié)構(gòu))例5.2 求一元二次方程 的根。由于Matlab能進(jìn)行復(fù)數(shù)運算,所以不需要判斷方程的判別式,可直接根據(jù)求根公式求根。程序如下: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=,num
8、2str(x(1),x2=,num2str(x(2);程序輸出為:a=?4b=?78c=?54x1=-0.7188,x2=-18.781220axbxc Digital Signal ProcessingMatlab程序設(shè)計(順序結(jié)構(gòu))3、程序的暫停 程序執(zhí)行過程中暫停,可用pause函數(shù),其調(diào)用格式為:pause(延遲描述)如果省略延遲時間,直接使用pause,則將暫停程序,直到 用戶按任一鍵后程序繼續(xù)執(zhí)行。若要強(qiáng)行中止程序的運行可按Ctrl+C鍵。Digital Signal ProcessingMatlab程序設(shè)計(選擇結(jié)構(gòu))選擇結(jié)構(gòu)是根據(jù)給定的條件成立或不成立,分別執(zhí)行不同的語句。Ma
9、tlab用于實現(xiàn)選擇結(jié)構(gòu)的語句有if語句,switch語句和try語句。1.if語句在Matlab中,if語句有3種格式。(1)單分支if語句語句格式:if 條件 語句組end例如:當(dāng)x是整數(shù)矩陣時,輸出x的值if fix(x)=x disp(x);endDigital Signal ProcessingMatlab程序設(shè)計(選擇結(jié)構(gòu))(2)雙分支if語句語句格式:if 條件 語句組 1else 語句組 2end當(dāng)條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2,然后再執(zhí)行if語句的后續(xù)語句。Digital Signal ProcessingMatlab程序設(shè)計(選擇結(jié)構(gòu))例 計算分段函數(shù):2cos
10、(1)1,10,10 xxxyxxx x 程序如下:x=input(請輸入x的值:);if x=10 y=cos(x+1)+sqrt(x*x+1);else y=x*sqrt(x+sqrt(x);endy也可以用單分支if語句來實現(xiàn):x=input(請輸入x的值:);y=cos(x+1)+sqrt(x*x+1);if x=10 y=x*sqrt(x+sqrt(x);endyDigital Signal ProcessingMatlab程序設(shè)計(選擇結(jié)構(gòu))(3)多分支if語句語句格式:if 條件1 語句組 1elseif 條件2 語句組 2elseif 條件m 語句組 melse 語句組nend
11、Digital Signal ProcessingMatlab程序設(shè)計(選擇結(jié)構(gòu))輸入一個字符,若為大寫字母,則輸出其對應(yīng)的小寫字母;若為小寫字母,則輸出其對應(yīng)的大寫字母;若為數(shù)字字符則輸出其對應(yīng)的數(shù)值,若為其他字符則原樣輸出。程序如下:c=input(請輸入一個字符,s);if c=A&c=a&c=0&c=9 disp(abs(c)-abs(0);else disp(c);endDigital Signal ProcessingMatlab程序設(shè)計(選擇結(jié)構(gòu))2、switch語句switch語句根據(jù)表達(dá)式的取值不同,分別執(zhí)行不同的語句,其語句格式:switch 表達(dá)式case 表達(dá)式1 語句
12、組1case 表達(dá)式2 語句組2case 表達(dá)式m 語句組motherwise 語句組 nendDigital Signal ProcessingMatlab程序設(shè)計(選擇結(jié)構(gòu))某商場對顧客所購買的商品實行打折銷售,標(biāo)準(zhǔn)如下:price200 沒有折扣200=price500 3%折扣500=price1000 5%折扣1000=price2500 8%折扣2500=price5000 10%折扣5000 mtimesInner matrix dimensions must agree.Digital Signal ProcessingMatlab程序設(shè)計(循環(huán)結(jié)構(gòu))循環(huán)是指按照給定的條件,重
13、復(fù)執(zhí)行指定的語句,Matlab提供了兩種實現(xiàn)循環(huán)結(jié)構(gòu)的語句:for語句和while語句。1、for語句for語句的格式為:for 循環(huán)變量=表達(dá)式1:表達(dá)式2:表達(dá)式3 循環(huán)體語句end其中表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長,表達(dá)式3的值為循環(huán)變量的終值。步長為1時,表達(dá)式2可以省略。Digital Signal ProcessingMatlab程序設(shè)計(循環(huán)結(jié)構(gòu))已知 ,當(dāng)n=100時,求y的值。程序如下:y=0;n=100;for i=1:n y=y+1/i/i;endy輸出結(jié)果為:y=1.6350利用Matlab的特點,常用向量運算來代替循環(huán)操作,程序可以如下:n=100;
14、i=1:n;f=1./i.2;y=sum(f)22221111123ynDigital Signal ProcessingMatlab程序設(shè)計(循環(huán)結(jié)構(gòu))2、while語句while語句的一般格式為:while條件 循環(huán)體語句end其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。Digital Signal ProcessingMatlab程序設(shè)計(循環(huán)結(jié)構(gòu))從鍵盤輸入若干個數(shù),當(dāng)輸入0時結(jié)束輸入,求這些數(shù)的平均值和它們的和。sum=0;n=0;x=input(Enter a number(end in 0):);while(x=0)sum=sum+
15、x;n=n+1;x=input(Enter a number(end in 0):);endif(n0)sum mean=sum/nendDigital Signal ProcessingMatlab程序設(shè)計(循環(huán)結(jié)構(gòu))3、break語句和continue語句它們一般與if語句配合使用。break語句用于終止循環(huán)的執(zhí)行。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句。continue語句控制跳過循環(huán)體中的某些語句。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻^循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。Digital Signal ProcessingMatlab程序設(shè)計(循環(huán)結(jié)構(gòu))程序如下:for n=100:200 if rem(n,21)=0;continue end breakendn程序輸出結(jié)果為:n=105例 求100,200之間第一個能被21整除的整數(shù)。Digital Signal Processing課后作業(yè)Wireless Supports People Navigating預(yù)習(xí)內(nèi)容