亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種通信編碼系統(tǒng)的設(shè)計與實(shí)現(xiàn)

        2021-07-22 10:53:40鹿意茁姜欣欣
        河南科技 2021年8期

        鹿意茁 姜欣欣

        鹿意茁 姜欣欣

        (延邊大學(xué),吉林 延吉 133002)

        摘 要:在多樣化的通信編碼系統(tǒng)中,本文主要對基帶傳輸?shù)倪^程進(jìn)行整合設(shè)計,采取綜合性能較好的信源編碼與信道編碼。通過對哈夫曼編碼和曼徹斯特編碼算法的研究,針對信源特性,使用Python編程語言實(shí)現(xiàn)了信源信息到數(shù)字信號波形圖像的簡化。結(jié)果表明:該系統(tǒng)明顯提高了傳輸效率。

        關(guān)鍵詞:哈夫曼編碼;曼徹斯特編碼;通信編碼系統(tǒng)

        中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編碼:1003-5168(2021)08-0028-03

        Design and Implementation of a Communication Coding System

        LU Yizhuo JIANG Xinxin

        (Yanbian University,Yanji Jilin 133002)

        Abstract: In the diversified communication coding system, this paper mainly designed the baseband transmission process, and adopted the source code and channel coding with better comprehensive performance. Through the research on Huffman coding and Manchester coding algorithm, according to the characteristics of the source, Python programming language was used to simplify the source information to the digital signal waveform image. The results show that the transmission efficiency is improved obviously.

        Keywords: Haffman coding;Manchester code;communication coding system

        本文設(shè)計了一種通信編碼系統(tǒng)。在基帶傳輸中,模擬信號需要經(jīng)過信源編碼成為數(shù)字基帶信號,再經(jīng)過信道信號形成器變換成可采用的碼型在規(guī)定的信道傳輸[1]。信源編碼利用輸出符號序列的統(tǒng)計特性把信源輸出符號序列變換為最短的碼字序列,輸出編碼的比特流[2]。信道編碼的作用就是對在信道中傳輸?shù)臄?shù)字信號進(jìn)行糾、檢錯,使信息能無誤差地到達(dá)信號接收端進(jìn)行信號重建[3]。本系統(tǒng)采用哈夫曼編碼。哈夫曼碼的編碼方法并不唯一,對信源的統(tǒng)計特性并沒有特殊要求,編碼效率比較高,綜合性能優(yōu)于其他編碼,并且該編碼可提供一種同步機(jī)制,使接收端和發(fā)送端信號同步。為了方便對文本信息進(jìn)行編碼,該系統(tǒng)將信源編碼與信道編碼結(jié)合,通過程序?qū)崿F(xiàn)編碼算法的核心思想,設(shè)計出將文本信息編碼成基帶信號的系統(tǒng),在一定程度上降低傳統(tǒng)傳輸?shù)膹?fù)雜性,減少信源傳輸?shù)牟襟E,使傳輸變得更為精確。

        1 系統(tǒng)整體設(shè)計

        通信編碼系統(tǒng)整體設(shè)計框架如圖1所示。從圖1可知,該系統(tǒng)主要包括以下模塊:文本處理、信源編碼、信道編碼、數(shù)字信號波形處理。

        1.1 文本處理

        文本處理模塊的主要功能是統(tǒng)計字符。本系統(tǒng)字符統(tǒng)計是將文本放入TXT文件中,利用Python代碼讀取文本內(nèi)容,統(tǒng)計字符,找出每個字符在文中出現(xiàn)的次數(shù)。

        1.2 信源編碼

        該系統(tǒng)選擇哈夫曼編碼作為主要算法。第一,將TXT文本統(tǒng)計出的字符出現(xiàn)次數(shù){M1,M2,M3,…,Mi,…,Mn}當(dāng)作權(quán)值構(gòu)成n棵二叉樹的初始集合T={N1,N2,N3,…,Ni,…,Nn},將按升序排列的Mi作為每棵二叉樹Ni的根節(jié)點(diǎn),左右子樹均為空;第二,構(gòu)造新的二叉樹,將T中的兩個根節(jié)點(diǎn)權(quán)值最小的樹作為左右子樹,根節(jié)點(diǎn)的權(quán)值為其左右子樹的根節(jié)點(diǎn)的權(quán)值之和;第三,從T中刪除這兩棵樹,并把新的二叉樹按升序排列加入集合T中;第四,重復(fù)第二和第三步,直到集合T中只含一棵二叉樹,這就是哈夫曼樹。

        從根節(jié)點(diǎn)開始為每個節(jié)點(diǎn)路徑上的左分支賦予0,右分支賦予1,從根節(jié)點(diǎn)開始到每個節(jié)點(diǎn)的路徑就是每個節(jié)點(diǎn)的編碼,即為對應(yīng)該權(quán)值的字符的哈夫曼編碼[4]。

        1.3 信道編碼

        該系統(tǒng)采用曼徹斯特編碼對信號進(jìn)行處理。第一,

        讀取文本信息,將文本信息轉(zhuǎn)化為哈夫曼編碼的形式,存入新的TXT文件;第二,讀取哈夫曼編碼文件,該系統(tǒng)將“0”定義為由高電平到低電平的跳變,“1”定義為由低電平向高電平的跳變;第三,對文本的哈夫曼碼進(jìn)行重新編碼,成為曼徹斯特編碼形式存入新的TXT文件中。

        1.4 數(shù)字信號波形處理

        該模塊主要是利用Python繪圖表示出文本處理后字符經(jīng)過編碼后的數(shù)字信號波形。

        2 系統(tǒng)編碼的實(shí)現(xiàn)

        2.1 文本統(tǒng)計與單字符哈夫曼編碼

        將英文文本信息believe in yourself存入TXT文件中。先一次性讀取全部文本信息,再統(tǒng)計每一個字符出現(xiàn)的次數(shù)。開始進(jìn)行哈夫曼編碼時,首先判斷字符出現(xiàn)的次數(shù)是否為0,若不為0,就建立值為次數(shù)的節(jié)點(diǎn),并得到該字母和其出現(xiàn)次數(shù)。為得到字符的哈夫曼樹,首先定義節(jié)點(diǎn)的類,再根據(jù)哈夫曼樹思想定義函數(shù),找出所有次數(shù)中最小的兩個值,分別放入一個樹節(jié)點(diǎn)的左右節(jié)點(diǎn)中。起始為root,從左節(jié)點(diǎn)開始,判斷Capcity屬性是否可以作為節(jié)點(diǎn)子節(jié)點(diǎn)的數(shù)量,如果可以,打印0,然后繼續(xù)子節(jié)點(diǎn)到最下一層,重復(fù)這個操作,最后打印出每一個字符的父節(jié)點(diǎn)到root根部的所有路徑,便得到了單字符的哈夫曼編碼。

        文本統(tǒng)計與單字符哈夫曼編碼算法思路如算法1所示。

        算法1:文本統(tǒng)計與單字符哈夫曼編碼算法。

        先定義一個閾值MAXSIZE最大值為26。

        首先定義節(jié)點(diǎn)MHNode類,利用__init__(self)函數(shù)傳遞參數(shù),賦值給節(jié)點(diǎn)屬性。

        第一部分定義尋找兩個最小值FindTwoMinNode()函數(shù),輸入字符arr,字符長度arr_len。因為arr中有很多為空值,第一步先取得第一個不是0的,第二步尋找更小的值,第三步先設(shè)置第二小的值的初始值,然后取得第二個小的值,第四步尋找第二小的值,最后一步返回較大的max_index,較小的min_index的值。

        第二部分定義哈夫曼節(jié)點(diǎn)插入InsertMHNode()函數(shù),輸入arr,arrptr_len(閾值最大長度)。首先進(jìn)行賦值操作,設(shè)置最后返回head,當(dāng)作root。新建立一個節(jié)點(diǎn),設(shè)置此節(jié)點(diǎn)為樹節(jié)點(diǎn),而不是子節(jié)點(diǎn),這個節(jié)點(diǎn)合并FindTwoMinNode()函數(shù)的兩個最小值,左邊為較大值,右邊為較小值。

        第三部分定義哈夫曼樹遍歷PrintMHCode()函數(shù),輸入根節(jié)點(diǎn)root。先進(jìn)行賦值操作,然后遍歷哈夫曼樹。再進(jìn)行賦值操作,最后輸出head.data。

        第四部分設(shè)置主函數(shù)main(),首先進(jìn)行賦值操作。第一步讀取文件,設(shè)置content為文件全部內(nèi)容,將c(每一個字母)以content內(nèi)容循環(huán),統(tǒng)計每一個字母的數(shù)量。第二步進(jìn)行哈夫曼編碼,首先設(shè)置節(jié)點(diǎn),當(dāng)字母數(shù)量不是0時,建立一個節(jié)點(diǎn),調(diào)用節(jié)點(diǎn)類MHNode(),然后輸出“字母,數(shù)量”。第三步依次調(diào)用函數(shù)InsertMHNode(arr,arrptr_len)、函數(shù)FindTwoMinNode(arr,arr_len)和函數(shù)PrintMHCode(root),然后輸出字母統(tǒng)計結(jié)果,輸出PrintMHCode(root)函數(shù)的執(zhí)行結(jié)果。程序的執(zhí)行結(jié)果如圖2所示。各字符的哈夫曼編碼如圖3所示。

        2.2 文本哈夫曼編碼算法

        在運(yùn)用第一步字符操作結(jié)果的基礎(chǔ)上進(jìn)行編程,在原本定義的函數(shù)中進(jìn)行改變和增加函數(shù),定義了新的函數(shù),將哈夫曼樹保存到設(shè)置的空字典中,形成鍵名為字母、鍵值為哈夫曼編碼的字典。最后根據(jù)英文文本中字符的順序?qū)蝹€字符對應(yīng)的哈夫曼編碼保存在列表中,再拼接保存在另一個TXT文件中。

        文本哈夫曼編碼算法思路如算法2所示。

        算法2:文本哈夫曼編碼算法。

        首先定義字典函數(shù)MHCodeDict(),輸入根節(jié)點(diǎn)root,鍵值d。先生成一個字典,鍵名為字母,鍵值為哈夫曼樹。然后進(jìn)行賦值運(yùn)算操作。

        設(shè)置主函數(shù)main(),依次調(diào)用函數(shù)InsertMHNode(arr,arrptr_len)和函數(shù)FindTwoMinNode(arr,arr_len)。先設(shè)置d為空字典{}(保存哈夫曼樹到字典),執(zhí)行MHCodeDict(root,d)函數(shù),然后根據(jù)文章內(nèi)容打印哈夫曼樹到另一個文件。再設(shè)置lst_tmp為空列表[](遍歷每一個字符,將每一個字符的哈夫曼樹添加到列表),以寫的方式打開文件,然后添加寫入lst_tmp。圖4為文本經(jīng)過信源編碼后的哈夫曼編碼。

        2.3 曼徹斯特編碼與數(shù)字信號波形顯示算法

        首先,一次讀取第二步生成哈夫曼碼的TXT文件,利用循環(huán)將原編碼的字符串轉(zhuǎn)化為數(shù)組,再根據(jù)系統(tǒng)的曼徹斯特編碼規(guī)則利用循環(huán)與判斷語句對原編碼進(jìn)行重新編碼,保存曼徹斯特編碼到新的TXT文件。其次,繪制信號波形圖時,要先設(shè)置圖像所需要的幾個重要變量,根據(jù)曼徹斯特編碼的規(guī)則,每個比特的中間有一次電平跳變,變通一下為原編碼的一個比特寬度對應(yīng)新編碼的兩個比特寬度,兩個編碼設(shè)置為相同的高度,同時設(shè)定一些距離數(shù)據(jù),規(guī)定新編碼在原編碼的下方。最后,設(shè)置顯示圖像的一些變量。

        將繪制過程分3個步驟:第一步,繪制所有的橫線;第二步,繪制豎線;第三步,繪制虛線。

        曼徹斯特編碼與數(shù)字信號波形顯示算法思路如算法3所示。

        算法3:曼徹斯特編碼與數(shù)字信號波形顯示算法。

        第一步畫虛線draw_xuxian函數(shù),輸入畫虛線的相關(guān)參數(shù)draw,x,y,count,width,height,pen_color。判斷條件循環(huán)執(zhí)行畫虛線draw.line( (_x,y+j*_sp,_x,y+(j+1)*_sp),pen_color)函數(shù)。圖5表示曼徹斯特編碼。

        第二步畫編碼draw_encoding函數(shù),輸入畫編碼的相關(guān)參數(shù)draw,x,y,lst,width,height,height_2,pen_color。判斷條件循環(huán)執(zhí)行畫編碼draw.line((_x1,_y,_x2,_y),pen_color)函數(shù)。

        第三步畫main主函數(shù),首先讀取文件內(nèi)容傳入content,并將content內(nèi)容賦值給 old_encoding,創(chuàng)建新的數(shù)組。然后以old_encoding內(nèi)容循環(huán),如果i為‘0:new_encoding添加[‘1,‘0];若i為‘1:new_encoding添加[‘0,‘1]。再將f以寫的形式讀取新文件,在f中寫入new_encoding。最后進(jìn)行賦值操作,依次執(zhí)行函數(shù)draw_encoding(o*)、函數(shù)draw_encoding(n*)、函數(shù)draw_xuxian(*)和函數(shù)image1.save(*)[創(chuàng)建指定大小、白色底部的RGB(Red、Green、Blue)圖形]。

        哈夫曼編碼和曼徹斯特編碼的數(shù)字信號波形顯示如圖6所示。

        3 結(jié)語

        該通信編碼系統(tǒng)對基帶傳輸?shù)倪^程進(jìn)行整合,結(jié)合數(shù)據(jù)結(jié)構(gòu)和Python編程技術(shù)開發(fā)完成,實(shí)現(xiàn)對文本的處理和編碼,再利用Python的繪圖庫PIL對信號波形進(jìn)行繪制。Python語言語法簡單易學(xué)[5]。使用Python編程語言根據(jù)相應(yīng)編碼方法編出代碼,降低了信息傳輸?shù)膹?fù)雜性,并使每一個算法都簡單易懂,對通信編碼理論的學(xué)習(xí)有較大幫助。總之,編碼結(jié)合處理是一個非常有發(fā)展前途的研究方向,這一研究方向的突破對信息傳輸和通信事業(yè)的發(fā)展具有深遠(yuǎn)意義。

        參考文獻(xiàn):

        [1]吳恩學(xué).簡述數(shù)字信號的基帶傳輸與調(diào)制傳輸技術(shù)[J].中國廣電技術(shù)文萃,2014(4):62-89.

        [2]劉敘含.基于圖像壓縮感知的信源信道聯(lián)合編碼系統(tǒng)研究[D].西安:西北工業(yè)大學(xué),2015:45.

        [3]陳辰,周林,陳啟望,等.聯(lián)合編碼的中繼系統(tǒng)不等錯誤保護(hù)機(jī)制[J].北京郵電大學(xué)學(xué)報,2021(1):59-65.

        [4]楊蘭.基于C語言的哈夫曼編碼的實(shí)現(xiàn)[J].軟件導(dǎo)刊,2012(9):40-42.

        [5]張雪蓮.試析Python編程語言的特點(diǎn)及應(yīng)用[J].電腦編程技巧與維護(hù),2020(11):29-30.

        18分钟处破好疼哭视频在线观看 | 亚洲视频一区二区久久久| 亚洲国产成人av毛片大全| 亚洲午夜精品一区二区| 国产尤物精品福利视频| 国产成+人+综合+亚洲专| 日本高清一区二区三区色| 日本h片中文字幕在线| 欧美 丝袜 自拍 制服 另类| 日韩AV无码免费二三区| 精品国产麻豆一区二区三区| 人妻少妇进入猛烈时中文字幕 | 永久免费av无码网站性色av| 亚洲成a人网站在线看| 毛茸茸的女性外淫小视频| 青青草原亚洲| 国产精品久久久av久久久| aⅴ色综合久久天堂av色综合 | 小雪好紧好滑好湿好爽视频| 一本大道久久东京热无码av| 99riav精品国产| 久久亚洲免费精品视频| 日韩国产精品无码一区二区三区| 日本精品一区二区三区在线视频| 人妻少妇精品系列一区二区| 在线播放亚洲丝袜美腿| 熟女体下毛毛黑森林| 国内久久婷婷精品人双人| 蜜桃视频网址在线观看| 337p粉嫩日本欧洲亚洲大胆| 国产成人www免费人成看片| 欧美综合自拍亚洲综合百度| 日韩精品在线一二三四区| 50岁退休熟女露脸高潮| 亚洲中文字幕在线爆乳| 人妻av在线一区二区三区| 国产无夜激无码av毛片| 在线精品国产一区二区| 国语对白三级在线观看| 欧美xxxxx在线观看| 国产精品亚洲成在人线|