版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì) </b></p><p> DTMF通信系統(tǒng)設(shè)計(jì)與仿真</p><p> 1、任務(wù)、性質(zhì)與意義</p><p> 用數(shù)學(xué)模型的方法對(duì)信息傳輸?shù)倪^(guò)程進(jìn)行仿真,是分析、設(shè)計(jì)及改進(jìn)通信系統(tǒng)性能的重要手段。本次課程設(shè)計(jì)的任務(wù)是綜合運(yùn)用通信原理、數(shù)字信號(hào)處理等課程所學(xué)知識(shí),實(shí)現(xiàn)一個(gè)雙音多頻(DTMF)信號(hào)傳輸
2、過(guò)程的軟件仿真。</p><p> 本次課程設(shè)計(jì)的性質(zhì)是通信原理、數(shù)字信號(hào)處理等課的綜合實(shí)踐環(huán)節(jié)。它的意義在于,通過(guò)本次課程設(shè)計(jì)可以從理論上加深對(duì)有關(guān)通信、數(shù)字信號(hào)處理原理的綜合理解,了解DTMF信號(hào)原理和用數(shù)字信號(hào)處理的方法實(shí)現(xiàn)DTMF信號(hào)的產(chǎn)生、傳輸與檢測(cè)的過(guò)程。還可以從實(shí)踐能力上掌握一門(mén)新的計(jì)算機(jī)編程工具——MATLAB語(yǔ)言。</p><p><b> 2、基本原理&l
3、t;/b></p><p> 2.1 雙音多頻(DTMF)信號(hào)</p><p> 雙音多頻(DTMF)信號(hào)就是用兩個(gè)不同頻率的音頻信號(hào)的組合來(lái)傳輸信息的一種通信信號(hào)形式,可以用數(shù)學(xué)式表示為</p><p><b> ?。?)</b></p><p> 式中fH和fL分別是高頻組和低頻組的兩個(gè)信號(hào)頻率。對(duì)這兩
4、個(gè)頻率的要求是:1、位于人而能夠聽(tīng)到的音頻頻率范圍內(nèi);2、頻率間隔近似為樂(lè)音音階的頻率間隔(按十二平均律,相鄰各個(gè)音的頻率呈等比關(guān)系,其比值約為1.059463,例如C3 130.8Hz,C4=261.7Hz,D4 293.7)。這種信號(hào)在電話(huà)線(xiàn)路上傳輸,而且聲音悅耳。在電話(huà)系統(tǒng)中,高低頻組的頻率已經(jīng)標(biāo)準(zhǔn)化,如圖1所示。</p><p> DTMF最早應(yīng)用是在電話(huà)通信系統(tǒng)中作為控制信令使用的。在電話(huà)通信系統(tǒng)中,
5、最早的控制信令是使用直流脈沖信號(hào)。脈沖撥號(hào)方式是由接在旋轉(zhuǎn)撥盤(pán)位置上的開(kāi)關(guān)或電子開(kāi)關(guān)控制二線(xiàn)電路的通與斷。每撥出一位數(shù)字,都有唯一一串電流脈沖相對(duì)應(yīng),圖2 中給出了數(shù)字’3’的電流脈沖序列。每個(gè)脈沖周期通常為100ms,其中有40%的占空時(shí)間,在人工控制條件下,兩個(gè)相繼數(shù)字的時(shí)間間隔可以從0.5S到數(shù)秒之間變化不等。由此可見(jiàn),利用撥號(hào)脈沖撥號(hào),發(fā)送一個(gè)10位長(zhǎng)的號(hào)碼大約需要7秒的時(shí)間。</p><p> 圖2
6、脈沖撥號(hào)示意圖</p><p> 當(dāng)采用DTMF撥號(hào)方式時(shí),號(hào)碼的每一個(gè)數(shù)字用一對(duì)音頻表示,話(huà)機(jī)中有8個(gè)單音頻,分為兩組,通過(guò)撥號(hào)盤(pán)選撥號(hào)碼時(shí),各位數(shù)字由觸鍵開(kāi)關(guān)輸入,其對(duì)應(yīng)的某個(gè)頻率對(duì)(高頻和低頻)同時(shí)傳輸,圖3所示為各頻率對(duì)應(yīng)位置。對(duì)DTMF信號(hào)所規(guī)定的指標(biāo)為:傳送速率為每秒10個(gè)數(shù)字,即每個(gè)數(shù)字100ms。每個(gè)數(shù)字傳送過(guò)程中,信號(hào)必須存在至少45ms,且不得多于55ms,100ms里其余時(shí)間是靜音。另外I
7、TU (國(guó)際電信聯(lián)盟)還規(guī)定,DTMF信號(hào)在每個(gè)頻率點(diǎn)上允許有1.5%的偏移,任何超出給定3.5%的信號(hào)認(rèn)為無(wú)效,拒絕承認(rèn)接收。還規(guī)定,在最壞檢測(cè)條件下,信噪比不得低于15dB。顯然。DTMF的撥號(hào)方式比雙脈沖撥號(hào)方式可快至10倍,明顯縮短了撥號(hào)時(shí)間。而且DTMF撥號(hào)方式發(fā)出的信號(hào)抗干擾能力大大高于脈沖撥號(hào)方式。因此,目前普遍使用DTMF撥號(hào)方式。</p><p> 采用DTMF信號(hào),用話(huà)音頻率發(fā)送數(shù)字,可以避
8、免占用額外的信道,又比脈沖撥號(hào)方式節(jié)約時(shí)間。在通信、測(cè)量、控制、自動(dòng)服務(wù)等領(lǐng)域有著廣泛的應(yīng)用。在基于電話(huà)的各種信息服務(wù)系統(tǒng)中,廣泛使用了DTMF信號(hào)來(lái)傳送按鍵操作信息。利用這種按鍵信息,人們可以直接通過(guò)電話(huà)查詢(xún)所需要的信息以及進(jìn)行各種遠(yuǎn)程控制。在實(shí)際系統(tǒng)中,首次撥號(hào)由程控交換機(jī)識(shí)別,完成主叫與被叫之間的接續(xù);二次乃至多次撥號(hào)的識(shí)別以及操作由用戶(hù)系統(tǒng)自己完成。DTMF信號(hào)還可以用來(lái)在話(huà)音信道上傳送各種類(lèi)型的控制指令,例如利用電話(huà)控制家用電
9、器的啟停,傳送遠(yuǎn)方的狀態(tài)監(jiān)測(cè)信息。目前DTMF信號(hào)已經(jīng)不僅僅限于在電話(huà)系統(tǒng)中應(yīng)用,在測(cè)量、控制、遙測(cè)遙控等各個(gè)領(lǐng)域都有應(yīng)用。</p><p> 2.2 DTMF信號(hào)的硬件產(chǎn)生與檢測(cè)</p><p> 通常是用硬件產(chǎn)生和檢測(cè)DTMF信號(hào)。已經(jīng)有多種專(zhuān)用的產(chǎn)生和檢測(cè)DTMF信號(hào)的集成電路器件。具有代表性的DTMF發(fā)送、接收器的型號(hào)為MT8860, MT8862, MT8870, MT88
10、72等。 </p><p> DTMF信號(hào)發(fā)送器電路原理如圖3所示,它主要包括:(1)晶體振蕩器——外接晶體(通常采用3.58MHz)與片內(nèi)電路構(gòu)成振蕩器、經(jīng)分頻產(chǎn)生參考信號(hào)。(2)鍵控可變速率時(shí)鐘產(chǎn)生電路——它是一種可變分頻比的分頻器,通常由n級(jí)移位寄存器與鍵控反饋邏輯單元組成。(3)正弦波產(chǎn)生電路——它出正弦波編碼器與D—A變換器構(gòu)成。通??勺兯贂r(shí)鐘信號(hào)先經(jīng)過(guò)5位移位寄存器,產(chǎn)生—組5位移位代碼,再由可編程
11、邏輯陣列(PLA)將其轉(zhuǎn)換成二進(jìn)制代碼,送到D—A變換器轉(zhuǎn)換成臺(tái)階形正弦波。顯然臺(tái)階的寬度等于時(shí)鐘頻率的倒數(shù),這樣形成的正弦波頻率必然對(duì)應(yīng)于時(shí)鐘的速率和按鍵的號(hào)碼。(4)混合電路——將鍵盤(pán)所對(duì)應(yīng)產(chǎn)生的行、列正弦波信號(hào)(即低高群fL、fH單音)相加,混合成雙音信號(hào)而輸出。(5)附加功能單元,如含有單音抑制、輸出控制(禁止)、雙鍵向按無(wú)輸出等控制電路。</p><p> DTMF接收器主要包括DTMF分組濾波器和D
12、TMF譯碼器,其基本原理如圖4所示。DTMF接收信號(hào)先經(jīng)高、低群帶通濾波進(jìn)行fL/fH區(qū)分,然后過(guò)零檢測(cè)、比較,得到相應(yīng)于DTMF的兩路fL/fH信號(hào)輸出。該兩路信號(hào)經(jīng)譯碼、鎖存、緩沖,恢復(fù)成對(duì)應(yīng)于16種DTMF信號(hào)音對(duì)的4比特二進(jìn)制碼(L1一L4)。</p><p> 2.3 雙音多頻信號(hào)軟件產(chǎn)生與檢測(cè)</p><p> 近年來(lái)DTMF也應(yīng)用在交互式控制中,諸如語(yǔ)言菜單、語(yǔ)言郵件、
13、電話(huà)銀行和ATM終端等。將DTMF信令的產(chǎn)生與檢測(cè)集成到任一含有數(shù)字信號(hào)處理器(DSP)的系統(tǒng)中,是一項(xiàng)較有價(jià)值的工程應(yīng)用。</p><p> 為了產(chǎn)生DTMF信號(hào),DSP用軟件產(chǎn)生兩個(gè)正弦波疊加在一起后發(fā)送,軟件具體實(shí)現(xiàn)方式可以有三種方法:</p><p> ?。?)用軟件模擬DSP的方式產(chǎn)生兩個(gè)數(shù)字正弦波振蕩器并把輸出合成起來(lái),建立所希望的雙音頻。</p><p&
14、gt; ?。?)通過(guò)產(chǎn)生的某頻率的方波后再附加濾波器濾出二次以上的諧波,產(chǎn)生DTMF信號(hào)。</p><p> ?。?)查表輸出產(chǎn)生DTMF信號(hào)。</p><p> 軟件檢測(cè)DTMF信號(hào)主要有以下方法:</p><p> ?。?)利用離散傅立葉變換(DFT)及其快速算法(FFT),求取DTMF信號(hào)頻譜的峰值點(diǎn),進(jìn)而利用峰值點(diǎn)的頻率判斷發(fā)送的數(shù)字。這種方法的缺點(diǎn)是計(jì)算
15、量大,不利于實(shí)時(shí)處理。但是如果使用MATLAB軟件仿真則可以用很簡(jiǎn)單的幾條語(yǔ)句實(shí)現(xiàn)。</p><p> ?。?)對(duì)于DTMF信號(hào)的波形,波形過(guò)零點(diǎn)數(shù)量決定了低頻信號(hào)的頻率,而極值點(diǎn)數(shù)量決定了高頻信號(hào)的頻率。因此通過(guò)軟件分別計(jì)算出高頻頻率和低頻頻率,從而實(shí)現(xiàn)DTMF的解碼。</p><p> 這里選擇采樣頻率為8K,已知每一個(gè)信號(hào)的頻率至少持續(xù)40ms的時(shí)間,我們對(duì)DTMF采樣160個(gè)點(diǎn),
16、即20ms,這樣總會(huì)有一個(gè)20ms的采樣點(diǎn)全部落在40ms的發(fā)送范圍內(nèi),對(duì)采樣的點(diǎn)進(jìn)行6次求和取平均,去掉噪聲成分,然后分別計(jì)算過(guò)零點(diǎn)的數(shù)目a和極值點(diǎn)的數(shù)目b,對(duì)應(yīng)頻率可以計(jì)算為:</p><p> 既然可以求出DTMF信號(hào)的一組頻率值,那么就可以得出對(duì)應(yīng)電話(huà)號(hào)碼值。這種算法比較適合于單片機(jī)硬件實(shí)現(xiàn),但是其抗噪聲性能較差。</p><p> ?。?)計(jì)算接收到的DTMF信號(hào)在8個(gè)既定頻率
17、的能量,進(jìn)而確定是否有DTMF信號(hào)到達(dá)以及收到的是哪一對(duì)信號(hào),此外通過(guò)計(jì)算接收信號(hào)的總能量來(lái)防止誤判。采用Geortzel算法可進(jìn)一步提高計(jì)算效率,Goertzel算法實(shí)質(zhì)是一個(gè)兩極點(diǎn)的IIR濾波器,對(duì)應(yīng)每一個(gè)頻點(diǎn)有一個(gè)匹配濾波器,在抽樣時(shí)刻檢測(cè)。這種方法理論上屬于最佳接收方法,而且算法有利于用DSP實(shí)現(xiàn)。在本次課程設(shè)計(jì)中要求使用這種方法。</p><p> DTMF解碼即是在輸入信號(hào)中搜索出有效的行頻和列頻。
18、</p><p> 2.4 數(shù)字正弦波振蕩器原理</p><p> 數(shù)字正弦波振蕩器的功能是利用數(shù)字信號(hào)處理的方法產(chǎn)生正弦波信號(hào)的抽樣序列?;驹硎牵?lt;/p><p> 設(shè)數(shù)字正弦波振蕩器要產(chǎn)生的波形為</p><p><b> ?。?)</b></p><p><b> 則
19、其Z變換為</b></p><p> 上式的分子與分母同時(shí)乘以</p><p> y(n)可以看作是一個(gè)單位沖擊函數(shù)激勵(lì)了一個(gè)線(xiàn)性系統(tǒng)的沖擊響應(yīng)。這個(gè)線(xiàn)性系統(tǒng)的傳遞函數(shù)就是Y(z)。由Y(z)可以寫(xiě)出該線(xiàn)性系統(tǒng)的差分方程:</p><p><b> 式中為數(shù)字角頻率。</b></p><p> 令輸入
20、x(n)為單位沖擊函數(shù),即</p><p> 則可以得到下面的遞推方程</p><p> 當(dāng)n<0時(shí),y(n)=0</p><p> 當(dāng)n=0時(shí),y(0)=0</p><p><b> 當(dāng)n=1時(shí),</b></p><p><b> 當(dāng)n=2時(shí),</b><
21、;/p><p> 當(dāng)n>2時(shí), (2) </p><p> 實(shí)現(xiàn)時(shí),首先將每個(gè)頻率常數(shù)存在一個(gè)表中,用來(lái)初始化給定鍵的振蕩器;再按照(2)進(jìn)行迭代計(jì)算,就得到正弦序列的輸出;將兩個(gè)這樣的輸出疊加即可得到雙音頻的輸出。每個(gè)數(shù)字輸出的樣本數(shù)取決于數(shù)字速率與采樣速率。雙音頻中的每一個(gè)音調(diào)之后都是同樣長(zhǎng)度的無(wú)音周期,從而可以檢測(cè)到按鍵的釋放。&
22、lt;/p><p> 2.5 數(shù)字匹配濾波器原理(Geortzel算法)</p><p> 計(jì)算接收到的DTMF信號(hào)在8個(gè)既定頻率的能量,進(jìn)而 確定是否有DTMF信號(hào)到達(dá)以及收到的是哪一對(duì)信號(hào),此外通過(guò)計(jì)算接收信號(hào)的總能量來(lái)防止誤判。為滿(mǎn)足檢測(cè)8個(gè)DTMF頻點(diǎn)(偏差1.5%),需計(jì)算256點(diǎn)FFT,因只對(duì)8個(gè)頻點(diǎn)感興趣,故可以直接計(jì)算8個(gè)頻點(diǎn)附近的DFT</p><p
23、><b> ,</b></p><p> 計(jì)算數(shù)字信號(hào)的頻譜可以采用DFT及其快速算法FFT,而在實(shí)現(xiàn)DTMF解碼時(shí),采用Goertzel算法要比FFT更快。通過(guò)FFT可以計(jì)算得到信號(hào)所有譜線(xiàn),了解信號(hào)整個(gè)頻域信息,而對(duì)于DTMF信號(hào)只用關(guān)心其8個(gè)行頻/列頻及其二次諧波信息即可(二次諧波的信息用于將DTMF信號(hào)與聲音信號(hào)區(qū)別開(kāi))。此時(shí)Goertzel算法能更加快速地在輸入信號(hào)中提取
24、頻譜信息。Goertzel算法實(shí)質(zhì)是一個(gè)兩極點(diǎn)的IIR濾波器,其算法原理框圖如圖5。</p><p> 圖5 Geortzel算法信號(hào)流圖</p><p> 對(duì)應(yīng)每一個(gè)頻點(diǎn)有一個(gè)匹配濾波器,第k個(gè)頻率匹配濾波器的傳遞函數(shù)為</p><p><b> 其中</b></p><p><b> ,,<
25、/b></p><p><b> , </b></p><p> 對(duì)應(yīng)的前、后向差分方程為:</p><p> 后一個(gè)方程無(wú)需全部計(jì)算,只需要在n=N時(shí)刻,即最后的輸出時(shí)刻計(jì)算。</p><p> 如果考慮同步相位誤差,也可以在n=N時(shí)刻附近計(jì)算一段時(shí)間內(nèi)的輸出。</p><p>
26、 前向差分方程也可以改寫(xiě)為便于計(jì)算的遞歸形式:</p><p> 并令初始值為。在n=N時(shí)刻既可以得到所需要的X(k)。</p><p> 由于在DTMF檢測(cè)中,輸入的信號(hào)是實(shí)數(shù)序列,并不需要檢測(cè)出8個(gè)行頻/列頻的相位,只需要計(jì)算出其幅度平方即可。因此計(jì)算|X(k)|2如下:</p><p> 這里分別表示狀態(tài)變量在N和N-1時(shí)刻的值。</p>
27、<p> 在輸入信號(hào)中檢測(cè)DTMF信號(hào),并將其轉(zhuǎn)換為實(shí)際的數(shù)字,這一解碼過(guò)程本質(zhì)是連續(xù)的過(guò)程,需要在輸入的數(shù)據(jù)信號(hào)流中連續(xù)地搜索DTMF信號(hào)頻譜的存在。整個(gè)檢測(cè)過(guò)程分兩步:首先采用Goertzel算法在輸入信號(hào)中提取頻譜信息;接著作檢測(cè)結(jié)果的有效性檢查。</p><p> 2.6 仿真系統(tǒng)框圖</p><p> 圖6 仿真系統(tǒng)框圖</p><p&g
28、t;<b> 軟件流程圖</b></p><p><b> 輸入鍵號(hào)</b></p><p> 生成DTMF信號(hào)(時(shí)域、頻域顯示)</p><p> 產(chǎn)生高斯噪聲(時(shí)域、頻域顯示)</p><p> 信道傳輸(高斯白噪聲信道,可選作帶限濾波器信道)</p><p>
29、 接收端隨機(jī)延遲(30個(gè)點(diǎn)以?xún)?nèi))</p><p><b> 匹配濾波接收</b></p><p> DTMF信號(hào)到達(dá)檢測(cè)</p><p> DTMF信號(hào)識(shí)別(時(shí)域、頻域顯示)</p><p><b> DTMF鍵號(hào)識(shí)別</b></p><p> 3. 工作內(nèi)容與
30、思考題</p><p><b> 3.1 工作內(nèi)容</b></p><p> 1、設(shè)計(jì)計(jì)算正弦波數(shù)字振蕩器、數(shù)字匹配濾波器的參數(shù);</p><p> 2、用MATLAB語(yǔ)言設(shè)計(jì)一個(gè)利用DTMF信號(hào)傳輸學(xué)號(hào)代碼的仿真系統(tǒng)。觀(guān)察下列信號(hào)的波形:學(xué)號(hào)代碼的非歸零基帶信號(hào)、DTMF信號(hào)、信道加入噪聲、接收信號(hào)、匹配濾波器輸出、譯碼判決結(jié)果;<
31、;/p><p> 3、利用仿真的系統(tǒng)進(jìn)行抗干擾性能等方面的試驗(yàn)分析,試驗(yàn)分析的具體內(nèi)容詳見(jiàn)思考題。</p><p><b> 3.2 思考題</b></p><p> [1] 分析DTMF信號(hào)的頻譜,為什么DTMF信號(hào)能夠在電話(huà)信道傳輸,要求的帶寬為多少?</p><p> [2] 設(shè)信噪比分別為20dB,10dB
32、,0dB, -6dB,-10dB,-20dB,分析在理想(信道無(wú)失真)情況下,仿真計(jì)算誤碼率與信噪比的關(guān)系,并與理論分析結(jié)果比較。</p><p> [3] 仿真分析匹配濾波器中心頻率誤差對(duì)DTMF信號(hào)檢測(cè)有什么影響?</p><p> [4] 仿真分析DTMF信號(hào)的時(shí)間長(zhǎng)度對(duì)信號(hào)的檢測(cè)有什么影響? </p><p> [5] 如果在匹配濾波器前插入FIR帶通
33、濾波器,通頻帶在600--1800Hz之間。用窗函數(shù)法設(shè)計(jì)FIR帶通濾波器,并分析插入帶通濾波器對(duì)檢測(cè)性能有什么影響?</p><p><b> 4 設(shè)計(jì)要求</b></p><p> 1、自學(xué)復(fù)習(xí)通信原理、數(shù)字信號(hào)處理的有關(guān)內(nèi)容,掌握算法原理; </p><p> 2、掌握MATLAB語(yǔ)言的使用;</p><p&
34、gt; 3、完整實(shí)現(xiàn)仿真系統(tǒng),發(fā)送自己的學(xué)號(hào),接收自己的學(xué)號(hào);</p><p> 4、記錄觀(guān)察到的各種波形;</p><p> 5、撰寫(xiě)課程設(shè)計(jì)報(bào)告。</p><p> 報(bào)告統(tǒng)一使用B5紙,統(tǒng)一報(bào)告封面,報(bào)告篇幅以3000字為宜。報(bào)告中要有設(shè)計(jì)目的;設(shè)計(jì)基本內(nèi)容及步驟;每一步中應(yīng)用的原理方法;試驗(yàn)仿真結(jié)果及相關(guān)波形;對(duì)試驗(yàn)結(jié)果進(jìn)行的性能分析。報(bào)告正文用手寫(xiě),
35、圖、程序可以打印作為附件。</p><p> 5.編程工具M(jìn)ATLAB簡(jiǎn)介(亦可以采用C語(yǔ)言、C++、VC、VB等編程語(yǔ)言實(shí)現(xiàn) )</p><p> 5.1 基本運(yùn)算與函數(shù)</p><p> 在MATLAB下進(jìn)行基本數(shù)學(xué)運(yùn)算,只需將運(yùn)算式直接打入提示號(hào)(>>)之后,并按入Enter鍵即可。例如: </p><p> &g
36、t;>(5*2+1.3-0.8)*10/25 </p><p><b> ans = </b></p><p><b> 4.2000 </b></p><p> MATLAB會(huì)將運(yùn)算結(jié)果直接存入一變量ans,代表MATLAB運(yùn)算后的答案(Answer),并顯示其數(shù)值于屏幕上。(為簡(jiǎn)便起見(jiàn),在下述各例中,我們不
37、再印出MATLAB的提示號(hào)。) 我們也可將上述運(yùn)算式的結(jié)果設(shè)定給另一個(gè)變量x: </p><p> x = (5*2+1.3-0.8)*10^2/25 </p><p><b> x = </b></p><p><b> 42 </b></p><p> 此時(shí)MATLAB會(huì)直接顯示x的值。
38、若不想讓MATLAB每次都顯示運(yùn)算結(jié)果,只需在運(yùn)算式最後加上分號(hào)(;)即可。</p><p> 由上例可知,MATLAB認(rèn)識(shí)所有一般常用到的加(+)、減(-)、乘(*)、除(/)的數(shù)學(xué)運(yùn)算符號(hào),以及冪次運(yùn)算(^)。MATLAB將所有變量均存成double的形式,所以不需經(jīng)過(guò)變量聲明。MATLAB同時(shí)也會(huì)自動(dòng)進(jìn)行存儲(chǔ)器的使用和回收,而不必像C語(yǔ)言,必須由使用者一一指定。</p><p>
39、 變量也可用來(lái)存放向量或矩陣,并進(jìn)行各種運(yùn)算,如下例的行向量(Row vector)運(yùn)算:</p><p> x = [1 3 5 2]; </p><p> y = 2*x+1 </p><p><b> y = </b></p><p><b> 3 7 11 5 </b></p&
40、gt;<p> 5.2 控制命令 </p><p> 5.2.1 for語(yǔ)句,其基本形式為: </p><p> for 變量 = 矩陣; </p><p><b> 運(yùn)算式; </b></p><p><b> end</b></p><p>
41、其中變量的值會(huì)被依次設(shè)定為矩陣的每一行,來(lái)執(zhí)行介于for和end之間的運(yùn)算式。因此,若無(wú)意外情況,運(yùn)算式執(zhí)行的次數(shù)會(huì)等于矩陣的行數(shù)。 </p><p> 舉例來(lái)說(shuō),下列命令會(huì)產(chǎn)生一個(gè)長(zhǎng)度為6的調(diào)和數(shù)列:</p><p> x = zeros(1,6); % x是一個(gè)16的零矩陣 </p><p> for i = 1:6, </p><p&
42、gt; x(i) = 1/i; </p><p><b> end </b></p><p> 5.2.2 while語(yǔ)句</p><p><b> 基本形式為: </b></p><p> while 條件式; </p><p><b> 運(yùn)算式;
43、</b></p><p><b> end</b></p><p> 也就是說(shuō),只要條件示成立,運(yùn)算式就會(huì)一再被執(zhí)行。例如先前產(chǎn)生調(diào)和數(shù)列的例子,我們可用while圈改寫(xiě)如下: </p><p> x = zeros(1,6); % x是一個(gè)16的零矩陣 </p><p><b> i =
44、 1; </b></p><p> while i <= 6, </p><p> x(i) = 1/i; </p><p><b> i = i+1; </b></p><p><b> end </b></p><p> 5.2.3 條件語(yǔ)句
45、if,...,end </p><p><b> 基本形式為:</b></p><p><b> if 條件式; </b></p><p><b> 運(yùn)算式; </b></p><p><b> end</b></p><p&g
46、t;<b> 例:</b></p><p> if rand(1,1) > 0.5, </p><p> disp('Given random number is greater than 0.5.'); </p><p><b> end </b></p><p>
47、 5.2.4 MATLAB文件</p><p> 若要一次執(zhí)行大量的MATLAB命令,可將這些命令存放于一個(gè)擴(kuò)展名為m的文件。包含MATLAB命令的文件都以m為擴(kuò)展名,因此通稱(chēng)m文件,只要直接鍵入文件名,就可執(zhí)行其所包含的命令。嚴(yán)格來(lái)說(shuō),m文件可再細(xì)分為命令集(Scripts)及函數(shù)(Functions)。</p><p> 命令集的效果和將命令逐一輸入完全一樣,因此若在命令集可以
48、直接使用工作空間的變量,而且在命令集中設(shè)定的變量,也都在工作空間中看得到。</p><p> 函數(shù)則需要用到輸入?yún)?shù)和輸出參數(shù)來(lái)傳遞變量,這就像是C語(yǔ)言的函數(shù)。在調(diào)用函數(shù)時(shí),你只能經(jīng)由輸入?yún)?shù)來(lái)控制函數(shù)的輸入,經(jīng)由輸出參數(shù)來(lái)得到函數(shù)的輸出,但所有的暫時(shí)變量都會(huì)隨著函數(shù)的結(jié)束而消失。</p><p> 5.3 MATLAB常用的數(shù)學(xué)函數(shù)</p><p> abs
49、(x):標(biāo)量的絕對(duì)值或向量的長(zhǎng)度 </p><p> angle(z):復(fù)數(shù)z的相角(Phase angle) </p><p> sqrt(x):開(kāi)平方 </p><p> real(z):復(fù)數(shù)z的實(shí)部 </p><p> imag(z):復(fù)數(shù)z的虛部 </p><p> conj(z):復(fù)數(shù)z的共軛復(fù)數(shù)
50、</p><p> round(x):四舍五入至最近整數(shù) </p><p> fix(x):無(wú)論正負(fù),舍去小數(shù)至最近整數(shù) </p><p> sign(x):符號(hào)函數(shù)。當(dāng)x<0時(shí),sign(x)=-1;當(dāng)x=0時(shí),sign(x)=0;當(dāng)x>0時(shí),sign(x)=1。</p><p> rem(x,y):求x除以y的余數(shù) &
51、lt;/p><p> gcd(x,y):整數(shù)x和y的最大公因數(shù) </p><p> lcm(x,y):整數(shù)x和y的最小公倍數(shù) </p><p> exp(x):自然指數(shù) </p><p> pow2(x):2的指數(shù) </p><p> log(x):以e為底的對(duì)數(shù),即自然對(duì)數(shù)或 </p><p
52、> log2(x):以2為底的對(duì)數(shù) </p><p> log10(x):以10為底的對(duì)數(shù) </p><p> sin(x):正弦函數(shù) </p><p> cos(x):余弦函數(shù) </p><p> tan(x):正切函數(shù) </p><p> asin(x):反正弦函數(shù) </p><
53、;p> acos(x):反馀弦函數(shù) </p><p> atan(x):反正切函數(shù) </p><p> min(x): 向量x的元素的最小值 </p><p> max(x): 向量x的元素的最大值 </p><p> sort(x): 對(duì)向量x的元素進(jìn)行排序(Sorting) </p><p> l
54、ength(x): 向量x的元素個(gè)數(shù) </p><p> sum(x): 向量x的元素總和 </p><p> cumsum(x): 向量x的累計(jì)元素總和 </p><p> dot(x, y): 向量x和y的內(nèi)積 </p><p> cross(x, y): 向量x和y的外積 </p><p> 5.4 M
55、ATLAB 繪圖</p><p> MATLAB不但擅長(zhǎng)于矩陣相關(guān)的數(shù)值運(yùn)算,還適合于各種科學(xué)繪圖。這里簡(jiǎn)介幾種基本平面繪圖命令。 </p><p> plot是繪制一維曲線(xiàn)的基本函數(shù),但在使用此函數(shù)之前,需要先定義曲線(xiàn)上每一點(diǎn)的x及y座標(biāo)。下例可畫(huà)出一條正弦曲線(xiàn): </p><p> close all; x=linspace(0, 2*pi, 100);
56、% 100個(gè)點(diǎn)的x座標(biāo) </p><p> y=sin(x); % 對(duì)應(yīng)的y座標(biāo) </p><p> plot(x,y); </p><p> MATLAB基本繪圖函數(shù) </p><p> plot: x軸和y軸均為線(xiàn)性刻度(Linear scale) </p><p> loglog: x軸和y軸均為對(duì)數(shù)刻
57、度(Logarithmic scale) </p><p> semilogx: x軸為對(duì)數(shù)刻度,y軸為線(xiàn)性刻度 </p><p> semilogy: x軸為線(xiàn)性刻度,y軸為對(duì)數(shù)刻度 </p><p> 若要畫(huà)出多條曲線(xiàn),只需將座標(biāo)對(duì)依次放入plot函數(shù)即可: </p><p> plot(x, sin(x), x, cos(x))
58、; </p><p> 若要改變顏色,在座標(biāo)對(duì)後面加上相關(guān)字串即可: </p><p> plot(x, sin(x), 'c', x, cos(x), 'g'); </p><p> 若要同時(shí)改變顏色及圖線(xiàn)型態(tài)(Line style),也是在座標(biāo)對(duì)後面加上相關(guān)字串即可: </p><p> plot(
59、x, sin(x), 'co', x, cos(x), 'g*'); </p><p> plot繪圖函數(shù)的叁數(shù) </p><p> 字符 顏色字符圖線(xiàn)型態(tài)</p><p> y 黃色. 點(diǎn)</p><p> k 黑色o 圓</p><p> w 白色x
60、x</p><p> b 藍(lán)色+ +</p><p> g 綠色* *</p><p> r 紅色- 實(shí)線(xiàn)</p><p> c 亮青色: 點(diǎn)線(xiàn)</p><p> m 錳紫色-. 點(diǎn)虛線(xiàn)</p><p> 用subplot來(lái)同時(shí)畫(huà)出數(shù)個(gè)小圖形于同一個(gè)視
61、窗之中:例如:</p><p> subplot(2,2,1); plot(x, sin(x)); </p><p> subplot(2,2,2); plot(x, cos(x)); </p><p> 5.5 MATLAB幫助</p><p> MATLAB功能強(qiáng)大,命令眾多,很難記全,但是MATLAB提供了友好的幫助界面。因此利
62、用MATLAB提供的幫助可以方便使用,邊用邊學(xué)。MATLAB幫助界面有兩種形式:命令行幫助和網(wǎng)頁(yè)瀏覽幫助。這里僅簡(jiǎn)單介紹命令行幫助。在MATLAB命令(command)窗口中鍵入help XXX,MATLAB就會(huì)給出相應(yīng)命令的功能、語(yǔ)法解釋。</p><p> 例如,在MATLAB命令(command)窗口中鍵入help plot</p><p> MATLAB就會(huì)給出如下提示:<
63、;/p><p> PLOT Linear plot. </p><p> PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix, then the vector is plotted versus the rows or columns of the matrix, whichever line up. If
64、X is a scalar and Y is a vector, length(Y) disconnected points are plotted.</p><p> PLOT(Y) plots the columns of Y versus their index.</p><p> If Y is complex, PLOT(Y) is equivalent to PLO
65、T(real(Y),imag(Y)). </p><p> In all other uses of PLOT, the imaginary part is ignored. Various line types, plot symbols and colors may be obtained with PLOT(X,Y,S) where S is a character string made from on
66、e element from any or all the following 3 columns:</p><p> b blue . point - solid</p><p> g green o circle : dotted</p&
67、gt;<p> r red x x-mark -. dashdot </p><p> c cyan + plus -- dashed </p><p> m magenta * star</p>
68、;<p> y yellow s square</p><p> k black d diamond</p><p> v triangle (down)</p><p> ^ triangle (up)</p><p> <
69、triangle (left)</p><p> > triangle (right)</p><p> p pentagram</p><p> h hexagram</p><p> For example, PLOT(X,Y,'c+:') plots a cyan dotted li
70、ne with a plus at each data point; PLOT(X,Y,'bd') plots blue diamond at each data point but does not draw any line.</p><p> PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by the (X,
71、Y,S) triples, where the X's and Y's are vectors or matrices and the S's are strings. </p><p> For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a solid yellow line
72、 interpolating green circles at the data points. The PLOT command, if no color is specified, makes automatic use of the colors specified by the axes ColorOrder property. The default Color Order is listed in the table ab
73、ove for color systems where the default is blue for one line, and for multiple lines, to cycle through the first six colors in the table. For monochrome systems, PLOT cycles over the axes LineStyl</p><p>
74、PLOT returns a column vector of handles to LINE objects, one handle per line. The X,Y pairs, or X,Y,S triples, can be followed by parameter/value pairs to specify additional properties of the lines.
75、 </p><p> 6. 程序與波形示例</p><p><b> 部分程序代碼如下:</b></p><p> %General parameter</p><p> clear all;</p><p> t_symbol=0.1;</p>
76、<p> f_sample=8000;</p><p> t_sample=1/8000;</p><p> frequency_LL=[697 770 852 941];</p><p> frequency_HH=[1209 1336 1477 1633];</p><p> symbols=['1'
77、'2' '3' 'a' ;'4' '5' '6' 'b' ;'7' '8' '9' 'c';'#' '0' '*' 'd'];</p><p> ID_string=inpu
78、t('please input your Identical String','s')</p><p> SNR_dB =input('please input SNR in dB');</p><p> SNR=power(10,SNR_dB/10);</p><p> signal_amplitude=1;&
79、lt;/p><p> power_of_signal=1;</p><p> sigma=sqrt(1/SNR);</p><p> LL=length(ID_string);</p><p> total_ss=[];</p><p> for nn=1:LL</p><p> [ro
80、w,col]=identify_ID(ID_string(nn));</p><p> [ss1,ss2]=generate_DTMF_signal(row,col);</p><p> ss=ss1+ss2;</p><p> total_ss=[total_ss ss];</p><p><b> end</b&g
81、t;</p><p><b> figure</b></p><p> noise=sigma*randn(1,length(total_ss));</p><p> zz=total_ss + noise;</p><p> subplot(2,1,1);</p><p><b&g
82、t; plot(zz);</b></p><p> subplot(2,1,2);</p><p> plot(abs(fft(zz)));</p><p><b> zzz=zz;</b></p><p> %detect signal starting position</p>&
83、lt;p> NN1=t_symbol/t_sample;</p><p> NN2=NN1/2;</p><p> NN=length(zzz)/NN1;</p><p> vector=[1,NN1,-500,500]; </p><p><b> % 符號(hào)檢測(cè)</b></p><
84、p> for nn=0:NN-1 %對(duì)N個(gè)符號(hào)檢測(cè)</p><p><b> figure</b></p><p> for k=1:4 %對(duì)低頻組4個(gè)匹配濾波器運(yùn)算</p><p><b> ss(1)=1;</b></p><p><b> ss(2)=0;<
85、/b></p><p> coef=2*pi*frequency_LL(k)/f_sample;</p><p> b0=sin(coef);</p><p> a1=2*cos(coef);</p><p> for n=3:NN1</p><p> ss(n)=a1*ss(n-1)-ss(n-2)+
86、b0 * zzz(n+nn*NN1);</p><p><b> end</b></p><p> %匹配濾波器輸出信號(hào)的模值</p><p><b> XX(k)=0;</b></p><p> for tt=1:5,
87、 </p><p> XX(k)=XX(k)+ss(NN2-tt)*ss(NN2-tt); </p><p><b> end</b></p><p><b> XX(k)</b></p><p> subplot(4,2,k);</p><p
88、> plot(ss,'r');</p><p> AXIS (vector);</p><p><b> end</b></p><p> for k=1:4 %對(duì)高頻組4個(gè)匹配濾波器運(yùn)算</p><p><b> ss(1)=1;</b></p>&
89、lt;p><b> ss(2)=0;</b></p><p> coef=2*pi*frequency_HH(k)/f_sample;</p><p> b0=sin(coef);</p><p> a1=2*cos(coef);</p><p> for n=3:NN1</p><p
90、> ss(n)=a1*ss(n-1)-ss(n-2)+b0 * zzz(n+nn*NN1);</p><p><b> end</b></p><p> %匹配濾波器輸出信號(hào)的模值</p><p><b> YY(k)=0;</b></p><p> for tt=1:5,
91、 </p><p> YY(k)=YY(k)+ss(NN2-tt)*ss(NN2-tt); </p><p><b> end</b></p><p> subplot(4,2,k+4);</p><p> plot(ss,
92、'r');</p><p> AXIS (vector);</p><p><b> end</b></p><p><b> %符號(hào)判決</b></p><p> [xxx,row_r] =max(XX);</p><p> [yyy,col_r]
93、 = max(YY);</p><p> symbol_r(nn+1)=symbols(row_r,col_r);</p><p><b> end</b></p><p> 程序運(yùn)行,傳送字符為"2008"、信噪比為0dB時(shí)繪出波形如下:</p><p> 圖1 發(fā)送“2008”、信噪比
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設(shè)計(jì)---dtmf信號(hào)的產(chǎn)生及檢測(cè)
- dtmf信號(hào)系統(tǒng)的matlab課程設(shè)計(jì)
- 通信原理課程設(shè)計(jì)--數(shù)字傳輸系統(tǒng)仿真
- matlab課程設(shè)計(jì)---利用matlab仿真軟件進(jìn)行繪圖
- 虛擬儀器課程設(shè)計(jì)--信號(hào)產(chǎn)生、測(cè)量、處理與傳輸系統(tǒng)設(shè)計(jì)
- 通信原理課程設(shè)計(jì)--matlab 軟件仿真課設(shè)
- 通信課程設(shè)計(jì)---數(shù)字基帶傳輸系統(tǒng)的仿真電路
- tcp傳輸程序課程設(shè)計(jì)
- 軟件課程設(shè)計(jì)報(bào)告
- protel軟件課程設(shè)計(jì)
- 課程設(shè)計(jì)----基于systemview的數(shù)字頻帶傳輸系統(tǒng)的仿真
- 軟件課程設(shè)計(jì)報(bào)告
- 抓圖軟件課程設(shè)計(jì)
- 軟件測(cè)試課程設(shè)計(jì)
- 軟件測(cè)試課程設(shè)計(jì)
- 微機(jī)檢測(cè)課程設(shè)計(jì)---蓄電池電量采集系統(tǒng)設(shè)計(jì)及仿真
- 交通仿真課程設(shè)計(jì)
- 課程設(shè)計(jì)---波形產(chǎn)生電路的設(shè)計(jì)
- 自動(dòng)控制原理課程設(shè)計(jì)--matlab軟件進(jìn)行系統(tǒng)仿真
- hspice仿真課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論