資源描述:
《基于matlab通信系統(tǒng)仿真——信源編解碼課程設計報告》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、.教師評閱意見:簽名:年月日實驗成績:一、設計題目u基于MATLAB通信系統(tǒng)仿真——信源編解碼。二、實驗內(nèi)容及要求u內(nèi)容:完成對一模擬信號的抽樣、量化、編碼,然后利用Huffman信源編碼對其進行數(shù)據(jù)壓縮,再利用(15,11)的線性分組碼進行信道編碼,然后采用DPSK調(diào)制方式調(diào)制,接著通過信道;在接收端進行其逆過程,即先解調(diào)(可采用相干解調(diào)或差分相干解調(diào)),再依次為信道譯碼,Huffman信源譯碼,PCM譯碼。u要求:利用相關知識,建立系統(tǒng)模型,完成各個模塊的代碼設計。三、實驗過程(詳細設計)u通信系統(tǒng)模型:..對模擬信號抽樣量化PCM編碼信道加噪經(jīng)低通濾波器過濾信道編碼D
2、PSK調(diào)制DPSK解調(diào)信道譯碼PCM譯碼Huffman編碼Huffman編碼還原信號u本實驗主函數(shù)框圖:u分步設計:?抽樣部分([sg1,sg2]=Sampling(fs)):函數(shù)功能:對原始信號進行抽樣;函數(shù)參數(shù):fs抽樣頻率(須大于等于兩倍的信號最高頻率);函數(shù)返回值:sg1表示原始信號,sg2表示抽樣信號;實現(xiàn):根據(jù)抽樣頻率fs在一個周期里抽取fs個值即可。?進制轉(zhuǎn)換部分([h]=dextobin(n,n_no)):函數(shù)功能:將十進制數(shù)轉(zhuǎn)換成二進制數(shù);函數(shù)參數(shù):n表示待轉(zhuǎn)換的十進制數(shù),n_no表示要將n轉(zhuǎn)換為二進制數(shù)的位數(shù);函數(shù)返回值:h表示n的n_no位二進制數(shù);實
3、現(xiàn):首先判定n是否為整數(shù),如果不是則將其先進行四舍五入處理,然后將處理后的n’轉(zhuǎn)換成位數(shù)與n_no相同的二進制數(shù),前面多余的位用零表示。?PCM編碼部分([pc]=PCM_code(sg2)):函數(shù)功能:對抽樣值sg2進行PCM編碼;函數(shù)參數(shù):sg2表示通過抽樣函數(shù)Sampling抽樣后的離散值;函數(shù)返回值:pc表示sg2中的每一個值通過PCM編碼后的8位二進制碼組的十進制數(shù)形式(說明:之所以轉(zhuǎn)換成十進制數(shù),是為了在Huffman編碼時的方便)。實現(xiàn):以一個實際的數(shù)為例,首先確定這個數(shù)擁有多少個量化單位(1/2048),然后編碼,如果為負則第一位為0,否則為1;接著根據(jù)剛才
4、計算得到的量化單位判斷其段落,得到段落碼;最后確定段內(nèi)碼,方法:先計算每一端的量化間隔..(注意:此處的是一量化單位為基礎的,而不是最小量化間隔)為段落值,然后再利用計算式,得到段內(nèi)段落數(shù),再將轉(zhuǎn)換成二進制數(shù),完成編碼。?Huffman數(shù)據(jù)壓縮部分:說明:本部分包含兩個函數(shù)Huff_P和Huff_code兩個函數(shù),下面將一一介紹;[P,Str,B]=Huff_P(Str):函數(shù)功能:計算Str中每一種元素的概率;函數(shù)參數(shù):Str是一個數(shù)組,元素為PCM_code函數(shù)返回的pc;函數(shù)返回值:P表示每個元素的概率矩陣,Str同參數(shù)一樣,B表示Str中的元素種類;實現(xiàn);利用系統(tǒng)函
5、數(shù)unique得到Str中的元素的種類,再利用雙重循環(huán)計算每一種元素個數(shù),再除以中的元素的個數(shù),便得到每一種元素的概率。[Code,Final_code,Length_code,Bnew]=Huff_code(P,Str,B):函數(shù)功能:對B中的每一種元素進行Huffman編碼;函數(shù)參數(shù):P表示概率矩陣,Str同Huff_P函數(shù)中的參數(shù)一致,B表示元素種類;函數(shù)返回值:Code表示建立的碼字表,F(xiàn)inal_code表示對B中的每一種元素編碼后的0、1比特流,Length_code表示Code中每一行碼字的長度,Bnew表示根據(jù)概率矩陣P降序排列后的元素。實現(xiàn):首先構造一個六
6、行的Huffman樹,第一行存放結(jié)點編號,第二行存放該結(jié)點的概率值,第三行記錄該結(jié)點的父結(jié)點,第四行記錄該結(jié)點是左結(jié)點還是右結(jié)點,第五行標記該結(jié)點是否為父結(jié)點,第六行存放概率P降序排列后的新矩陣。然后根據(jù)Huffman樹記錄的編碼過程,完成對B的編碼和對Str的編碼。?產(chǎn)生生成矩陣和監(jiān)督矩陣部分([G,H]=GH()):函數(shù)功能:產(chǎn)生(15,11)碼生成矩陣G和監(jiān)督矩陣H;函數(shù)參數(shù):無;函數(shù)返回值:生成矩陣G和監(jiān)督矩陣H;實現(xiàn):將單位矩陣與監(jiān)督矩陣分開完成,然后再合并到一起。首先生成兩個大小分別為(4,4)和(11,11)的單位矩陣;然后在利用循環(huán)生成監(jiān)督矩陣,方法如下:將
7、3至15除了4和8之外的這十一個數(shù)分別調(diào)用dextobin函數(shù)將其轉(zhuǎn)換成二進制數(shù),這些二進制數(shù)即作為監(jiān)督元。..將監(jiān)督元直接附在(11,11)單位矩陣的后面即可得到生成矩陣G,將監(jiān)督元轉(zhuǎn)置然后再將(4,4)的單位矩陣附在其后面即可得到監(jiān)督矩陣。?信道編碼部分([M,H]=code(bits)):函數(shù)功能:信道編碼,完成(15,11)的信道編碼;函數(shù)參數(shù):bits表示比特流;函數(shù)返回值:編碼后的比特流M和監(jiān)督矩陣H;實現(xiàn):首先調(diào)用GH()函數(shù)產(chǎn)生生成矩陣G和監(jiān)督矩陣H,然后判斷傳入的比特流能否被11整除;如果能,則直