當前位置:首頁 » 編程軟體 » 信源編解碼是什麼課程

信源編解碼是什麼課程

發布時間: 2022-10-11 08:09:30

⑴ 信源編碼的專業表述

既然信源編碼的基本目的是提高碼字序列中碼元的平均信息量,那麼,一切旨在減少剩餘度而對信源輸出符號序列所施行的變換或處理,都可以在這種意義下歸入信源編碼的范疇,例如過濾、預測、域變換和數據壓縮等。當然,這些都是廣義的信源編碼。
一般來說,減少信源輸出符號序列中的剩餘度、提高符號平均信息量的基本途徑有兩個:①使序列中的各個符號盡可能地互相獨立;②使序列中各個符號的出現概率盡可能地相等。前者稱為解除相關性,後者稱為概率均勻化。
信源編碼的一般問題可以表述如下:若某信源的輸出為長度等於M的符號序列集合 式中符號A為信源符號表,它包含著K個不同的符號,A={ɑk|k=1,…,K},這個信源至多可以輸出KM個不同的符號序列。記‖U‖=KM。所謂對這個信源的輸出進行編碼,就是用一個新的符號表B的符號序列集合V來表示信源輸出的符號序列集合U。若V的各個序列的長度等於 N,即 式中新的符號表B共含L個符號,B={bl|l=1,…,L}。它總共可以編出LN個不同的碼字。類似地,記‖V‖=LN。為了使信源的每個輸出符號序列都能分配到一個獨特的碼字與之對應,至少應滿足關系 ‖V‖=LN≥‖U‖=KM
或者 N/M≥logK/logL
假若編碼符號表B的符號數L與信源符號表A的符號數K相等,則編碼後的碼字序列的長度N必須大於或等於信源輸出符號序列的長度M;反之,若有N=M,則必須有L≥K。只有滿足這些條件,才能保證無差錯地還原出原來的信源輸出符號序列(稱為碼字的唯一可譯性)。可是,在這些條件下,碼字序列的每個碼元所載荷的平均信息量不但不能高於,反而會低於信源輸出序列的每個符號所載荷的平均信息量。這與編碼的基本目標是直接相矛盾的。下面的幾個編碼定理,提供了解決這個矛盾的方法。它們既能改善信息載荷效率,又能保證碼字唯一可譯。
離散無記憶信源的定長編碼定理
對於任意給定的ε>0,只要滿足條件 N/M≥(H(U)+ε)/logL
那麼,當M足夠大時,上述編碼幾乎沒有失真;反之,若這個條件不滿足,就不可能實現無失真的編碼。式中H(U)是信源輸出序列的符號熵。通常,信源的符號熵H(U)<logK,因此,上述條件還可以表示為 【H(U)+ε】/logL≤N/M≤logK/logL
特別,若有K=L,那麼,只要H(U)<logK,就可能有N<M,從而提高信息載荷的效率。由上面這個條件可以看出,H(U)離logK越遠,通過編碼所能獲得的效率改善就越顯著。實質上,定長編碼方法提高信息載荷能力的關鍵是利用了漸近等分性,通過選擇足夠大的M,把本來各個符號概率不等[因而H(U)<logK]的信源輸出符號序列變換為概率均勻的典型序列,而碼字的唯一可譯性則由碼字的定長性來解決。
離散無記憶信源的變長編碼定理
變長編碼是指V的各個碼字的長度不相等。只要V中各個碼字的長度 Ni(i=1,…,‖V‖)滿足克拉夫特不等式 這 ‖V‖個碼字就能唯一地正確劃分和解碼。離散無記憶信源的變長編碼定理指出:若離散無記憶信源的輸出符號序列為, 式中 A={ɑk|k=1,…,K},符號熵為H(U),對U進行唯一可譯的變長編碼,編碼字母表B的符號數為L,即B={bl|l=1,…,L},那麼必定存在一種編碼方法,使編出的碼字Vi=(vi1,…,viNi),(i=1,…,‖V‖),具有平均長度嚻: MH(U)/logL≤嚻<MH(U)/logL+1
若L=K,則當H(U)<logK=logL時,必有嚻<M;H(U)離logK越遠,則嚻越小於M。
具體實現唯一可譯變長編碼的方法很多,但比較經典的方法還是仙農編碼法、費諾編碼法和霍夫曼編碼法。其他方法都是這些經典方法的變形和發展。所有這些經典編碼方法,都是通過以短碼來表示常出現的符號這個原則來實現概率的均勻化,從而得到高的信息載荷效率;同時,通過遵守克拉夫特不等式關系來實現碼字的唯一可譯。
霍夫曼編碼方法的具體過程是:首先把信源的各個輸出符號序列按概率遞降的順序排列起來,求其中概率最小的兩個序列的概率之和,並把這個概率之和看作是一個符號序列的概率,再與其他序列依概率遞降順序排列(參與求概率之和的這兩個序列不再出現在新的排列之中),然後,對參與概率求和的兩個符號序列分別賦予二進制數字0和1。繼續這樣的操作,直到剩下一個以1為概率的符號序列。最後,按照與編碼過程相反的順序讀出各個符號序列所對應的二進制數字組,就可分別得到各該符號序列的碼字。
例如,某個離散無記憶信源的輸出符號序列及其對應的概率分布為對這些輸出符號序列進行霍夫曼編碼的具體步驟和結果如表。由表中可
以看出,在碼字序列中碼元0和1的概率分別為10/21和11/21,二者近乎相等,實現了概率的均勻化。同時,由於碼字序列長度滿足克拉夫特不等式 2×2-2+3×2-3+2×2-4=1
因而碼字是唯一可譯的,不會在長的碼字序列中出現劃錯碼字的情況。
以上幾個編碼定理,在有記憶信源或連續信源的情形也有相應的類似結果。在實際工程應用中,往往並不追求無差錯的信源編碼和解碼,而是事先規定一個解碼差錯率的容許值,只要實際的解碼差錯率不超過這個容許值即認為滿意(見信息率-失真理論和多用戶信源編碼)。

⑵ 基於圖結構應用《編碼,解碼器》的設計與實現 這個畢業設計應該從什麼思路下手啊~~計算機專高手請指點

Turbo卷積碼(TCC)是3G無線系統中所採用的前向錯誤校正(FEC)機制的整體部分。然而,Turbo解碼器所帶來的計算負擔非常重,並不太適合採用傳統DSP或RISC處理器實現。由於現場可編程邏輯陣列(FPGA)內在的並行結構,FPGA為解決3G基站收發器中所需要的符號速率FEC和其它計算密集的任務提供了一個高性能信號處理平台基礎。

Turbo 編碼

級聯碼方案(Concatenated coding schemes)是為了通過結合兩個或更多相對簡單的分量或構造模塊碼來獲得較高的編碼增益。Turbo碼認為是對級聯碼結構的一種改進,其中採用迭代演算法對相關的碼序列進行解碼。Turbo碼是通過將兩個或更多分量碼應用到同一數據序列的不同交織版本上構成的。對於任何傳統單分量編碼,解碼器的最後一級生成的都是硬判決解碼數據位。為了使象Turbo碼這樣的級聯碼方案工作得更好,解碼演算法不應被限制為只能在解碼器間傳遞硬判決。為最好地利用每個解碼器獲得的信息,解碼演算法必須可以實現軟判決交換,而不是採用硬判決。對於採用兩個分量碼的系統,解碼的概念是指將來自一個解碼器的軟判決輸入到另一個解碼器的輸入,並將此過程重復幾次以獲得更好的判決,如圖1所示 。

3GPP Turbo 編碼器

圖2為3GPP編碼器。

輸入數據流輸入到RSC1,它為每個輸入比特生成一個對等比特(Parity Bit)。輸入數據還經過交織後由RSC2處理生成第二個對等比特流。
3GPP標準定義,輸入塊的長度在40至5114 位之間。編碼器生成一個速率為1/3的包括原始輸入位和兩個對等位的系統碼。通過打孔方法可以獲得1/2編碼速度的編碼。遞歸系統編碼器的實現比較直接,然而交織器則不那麼簡單,要比標準的卷積或塊交織器復雜。

一旦將輸入數據塊長度K 提供給編碼器以後,編碼器將計算交織矩陣行數R和列數 C,並創建相應的交織數據結構。R 和 C 是數據塊長度K的函數。在輸入符號被載入到交織矩陣以後,那麼將根據一定的順序進行行間交換和列間交換。交換模式是根據塊長度K選擇的(即依賴於K)。行和列交換完成後,通過逐列讀出交織矩陣數據就可以得到最終的交織序列。在數據讀出時需要進行刪減操作,以保證在輸出中只有正確的輸入符號,請注意,交織陣列包含的數據位通常比K個原始輸入符號要多 ,因為R C>K。然後,新的序列經過RSC2編碼生成第二個對等位流。
實現交織器的一種方法是在存儲器中存儲完整的交換序列。即,一旦K 給定,即調用一個初始化常式(運行在處理器上的軟體常式或利用FPGA中的功能單元)生成相應的交換序列,然後將這一信息存儲在存儲器中。然而,這一方法需要大量的存儲器。利用Virtex -E FPGA 技術提供的 4096位每塊的片上存儲器,將需要[5114 13/4096]=17個存儲器塊。

在我們的方法中,採用一個預處理引擎生成一個序列值(存儲),這一序列值被存儲起來,交織器地址發生器將使用這些序列值。這一硬體單元採用幾個小型數據結構(素數表)來計算所需要的序列。這一準備過程需要的時鍾周期數與信息塊的長度成比例。例如,對於K=40的塊需要280時鍾周期,而對於最大塊長度K=5114,則需要 5290個時鍾周期。該過程只需要在塊長度變化時進行。地址發生器利用這些更為緊湊的數據結構來實時生成交織地址。

3GPP Turbo 解碼器

解碼器包括兩個MAP(最大後驗概率)解碼器和幾個交織器。Turbo演算法的優良的性能源於可以在兩個MAP解碼器間共享可靠性信息(extrinsic data,外數據,或稱先驗數據)。

在我們的設計中,MAP解碼器採用的是Bahl, Cocke, Jelinek 和 Rajiv (BCJR) 演算法。BCJR演算法計算每個符號的最大後驗對數似然率,並且是一種真正的軟判決演算法。考慮到數據是以塊的形式傳輸的,因此可以在時間維中前向或反向搜索一個符號序列。對於任一序列,其出現概率都是單獨符號出現概率的乘積。由於問題是線性的,因此序列概述可以利用概率的對數和來代替。

為了與一般文獻中的習慣一致,我們將解碼迭代的前向和反向狀態概率分別利用 和 來表示。通常,BCJR演算法要求在接收到整個信息後才開始解碼。對於實時應用,這一限制可能太嚴格了。例如,3GPP Turbo解碼器將需要大量存儲器存儲一個5114符號信息塊的完全狀態結構(state trellis)。對於單片FPGA設計來說,這需要的存儲資源太多了。與維特比(Vitebi)演算法類似,我們可以先從全零向量 O和數據{yk}(k 從 n 到 n-L) 開始反向迭代。L次反向迭代可獲得非常好的 n-L近似值。只要L選擇合適,最終的狀態標志(state metric)就是正確的。可以利用這一性質在信息結束前就開始進行有效的位解碼。

L 被稱為收斂長度。其典型值大約是解碼器約束長度的數倍(通常為5至10倍),並隨著信噪比的降低而增加。

通常,Turbo解碼演算法將計算所有的 (對整塊信息),將這些數值存儲起來,然後在反向迭代中與反向狀態概率一起用來計算新的外信息(extrinsic information,或稱先驗信息)。我們的設計中採用了窗口化方法。

解碼過程以一個前向迭代開始,計算包含L 個接收符號的塊i的 值。同時,對未來(i+1)塊進行一個反向迭代(標號 )。對塊i+1的反向迭代結束時,就獲得了開始對塊i 進行反向迭代所需要的正確的 初始向量。 與此同時對數似然函數(Lall)也在進行。 每一 和 處理過程都需要8個max* 操作 - 每個針對狀態結構(tellis)中的8個結點之一。最終的對數似然計算需要14個並行max* 運算符。為了提供可接受的解碼速率,在設計中採用了38個max* 功能單元。

從 C描述到FPGA設計

FPGA Turbo 編碼解碼器設計是利用基於C的設計和驗證方法進行的,如圖3所示。

演算法開發階段採用具有定點C類型的Art Library 來對定點計算的位真(bit-true)效應進行准確建模。在這一階段考察了幾種可能演算法的定點性能。一旦選定正確的量化演算法,就可利用A|rtDesignerPro創建一個專用DSP架構。A|rtDesignerPro的一個最強大的功能之一是可以插入和利用專用的數據通道核心(稱為專用單元,ASU)。利用這些ASU加速器核心可以使我們處理Turbo解碼器演算法內在的計算復雜性。

A|rtDesignerPro可自動完成寄存器分配、調度和控制器生成。在Turbo編碼解碼器設計中, A|rtDesignerr的自動循環合並可獲得最佳的;任務調度,MAP解碼步驟的內部循環都只有一個周期長。

A|rtDesignerPro生成的最終結果是可綜合的寄存器級(RT-level) VHDL或Verilog 描述。基於C的工具流支持FPGA專用功能。例如,可利用BlockRAM自動構造RAM,而寄存器文件也可利用分布式存儲器而不是觸發器來實現 。

最後,邏輯綜合和Xilinx實施工具套件將RTL HDL 轉換為 FPGA 配置位流。

FPGA Turbo 編碼解碼器實現

A|rtDesigner創建的Turbo編碼器和解碼器核心硬體結構包含許多專用ASU加速器。其中最重要的一個加速器完成max* 操作。max* 運算符根據下式計算兩個冪值a 和 b:

max* (a,b)=ln(expc(a)+expc(b))。

如 圖4所示, max* 運算是通過選擇(a,b)最大值,並應用一個存儲在查找表(LUT)中的校正因子近似進行的。這一近似演算法非常適合利用Xilinx FPGA 實現,其中LUT是其最終基本構造單元。

結果

Turbo解碼演算法硬體字長的選擇極大地影響總體性能。利用C-to-FPGA設計流程,這一定點分析是完全在C環境中完成的。結果示於圖 5。

上圖顯示出了我們的浮點Turbo解碼器演算法和對應的定點演算法之間的性能差別。模擬是在5114塊長度、5次解碼迭代和AWGN信道模型情況下進行的。結果清晰明顯出性能的損失是非常小的。

我們的Turbo解碼器的定點性能做為解碼器迭代次數的函數 ,對於1.5 dB SNR,位錯率為10-6。

解碼器功能的實現非常具有挑戰性,我們同時針對Virtex-E和 Virtex-II 器件進行了適配。Virtex-II 器件實施是採用運行在1.85 speedfile資料庫上的Xilinx 4.1i 實施工具集完成的。利用XC2V1000BG575-5 FPGA實現的最終設計,達到了66 MHz 的時鍾性能,消耗了3,060個邏輯片 和 16個塊RAM。對於從40至 5114符號長度的塊,採用5次解碼迭代循環的情況下,解碼器達到了2 至6.5 百萬符號每秒(Msym/s)的吞吐量。編碼器佔用了903個邏輯片、3個塊RAM並支持83 MHz時鍾頻率。對於從40至5114位的塊長度,速率可達到9 至20 Msym/s。

⑶ 大學學習的《通信原理》科目大概是講什麼的

1.緒論
通信系統和通信網的構成,信源、信宿和信號,信源編譯碼設備,信道及信道編解碼設備,交換設備
2.確定信號分析
確定信號的分類,周期信號的傅利葉級數分析,傅利葉變換,,能量譜密度和功率譜密度,確定信號的相關函數,卷積,希爾伯特變換,解析信號,頻帶信號與帶通系統
3. 隨機過程
隨機過程的統計(概率)特性,平穩隨機過程,高斯隨機過程(正態),平穩隨機過程通過線性系統,高斯白雜訊,窄帶平穩隨機過程,餘弦波加窄帶平穩高斯隨機過程,匹配濾波器,循環平穩隨機過程
4. 模擬通信系統
幅度調制,雙邊帶抑制載波調幅(DSB/SC AM),具有離散大載波的雙邊帶幅度調制(AM),單邊帶調幅(SSB AM),殘留邊帶調幅(VSB AM),角度調制,線性調制系統的抗雜訊性能,角度調制系統的抗雜訊性能,頻分復用
5.數字信號的基帶傳輸
數字基帶信號波形及其功率譜密度,AWGN下數字基帶信號的接收,數字PAM信號通過限帶基帶信道的傳輸,在理想限帶及加性白高斯雜訊干擾信道條件下數字PAM信號,眼圖,信道均衡,部分響應系統
6. 數字信號的頻帶傳輸
二進制數字信號正弦型載波調制,四相移相鍵控,M進制數字調制,恆包絡連續相位調制
7. 信源和信源編碼
信息熵,互信息I(X;Y),無失真離散信源編碼,信息率失真R(D)函數,失真信源編碼定理與限失真信源編碼,連續信源的限失真編碼,數字化基本原理,取樣,量化,相關信源的限失真信源編碼
8. 信道
信道的定義和分類,信道的數學模型,參信道特性及其對信號傳輸的影響,隨參信道特性及其對信號傳輸的影響,分集接收,信道容量,信道復用
9. 信道編碼
線性分組碼,循環,BCH碼,卷積碼,糾正突發錯誤碼,交織,級聯碼,Turbo碼
10. 正交碼與偽隨機碼
正交碼,偽隨機碼,Gold碼
11.通信網的基本知識
通信網的組成要素和性能要求,交換技術的基本原理,信令和協議

⑷ 數字電視系統的三大關鍵技術是什麼

一、數字電視的信源編解碼技術
數字電視尤其數字高清晰度電視與模擬電視相比,在實現過程中,最為困難的部分就是對視頻信號和音頻信號的壓縮。數字電視的圖像不能象模擬電視的圖像和聲音那樣直接傳輸,而是要多一道壓縮編碼工序。視頻編碼技術主要功能是完成圖像的壓縮,使數字電視的信號傳輸量由995Mbit/s減少為20~30Mbit/s。與視頻編解碼相同,音頻編解碼主要功能是完成聲音信息的壓縮。在HDTV視頻壓縮編解碼標准方面,都採用MPEG-2標准。MPEG壓縮後的信息可以供計算機處理,也可以在現有和將來的電視廣播頻道中進行分配。在音頻編碼方面,歐洲、日本採用了MPEG-2標准;美國採納了杜比(Dolby)公司的AC-3方案,MPEG-2為備用方案。
二、數字電視的復用系統
數字電視的復用系統是HDTV的關鍵部分之一。從發送端信息的流向來看,它將視頻、音頻、輔助數據等編碼器送來的數據比特流,經處理復合成單路串列的比特流,送給信道編碼及調制。接受端與此過程正好相反。在HDTV復用傳輸標准方面,都採用了MPEG-2 標准。
三、數字電視的信道編解碼及調制解調
數字電視信道編解碼及調制解調的目的是通過糾錯編碼、網格編碼、均衡等技術提高信號的抗干擾能力,通過調制把傳輸信號放在載波或脈沖串上,為發射做好准備。目前所說的各國數字電視的制式,標准不能統一,主要是指各國在該方面的不同,具體包括糾錯、均衡等技術的不同,帶寬的不同,尤其是調制方式的不同。
數字傳輸的常用調制方式:
•正交振幅調制(QAM):調制效率高,要求傳送途徑的信噪比高,適合有線電視電纜傳輸。
•鍵控移相調制(QPSK):調制效率高,要求傳送途徑的信噪比低,適合衛星廣播。
•殘留邊帶調制(VSB):抗多徑傳播效應好(即消除重影效果好),適合地面廣播。
•編碼正交頻分調制(COFDM):抗多徑傳播效應和同頻干擾好,適合地面廣播和同頻網廣播。

⑸ 信源、信道、信宿、編碼、解碼、反饋、噪音,即「七要素",這個怎麼理解能說明下么

信源、信道、信宿、編碼、解碼、反饋、噪音都是現代通信過程中需要考慮的因素或者基本需要的處理程序。
其中信源、信道、信宿是必不可少的,通信系統就是為了解決兩點間的通信問題,所以必須有一個發信端(信源),經過傳輸通道(信道---這個叫法不準確,應該是「傳輸通道」),才能到達收信端(信宿)。因而任何一個通信系統都由信源、信道、信宿組成,少一個都不行。
看這個,至於噪音則是因為通信過程中的干擾,真實世界中是無處不在的,而為了抵抗噪音帶來的失真,使用了編碼、解碼、反饋手段。
希望對你有幫助。

⑹ 信源編碼和信道編碼的作用是什麼

1、信源編碼

(1)作用之一是,即通常所說的數據壓縮;

(2)作用之二是將信源的模擬信號轉化成數字信號,以實現模擬信號的數字化傳輸。

2、信道編碼

(1)數字信號在傳輸中往往由於各種原因,使得在傳送的數據流中產生誤碼,從而使接收端產生圖象跳躍、不連續、出現馬賽克等現象。所以通過信道編碼這一環節,對數碼流進行相應的處理,

使系統具有一定的糾錯能力和抗干擾能力,可極大地避免碼流傳送中誤碼的發生。誤碼的處理技術有糾錯、交織、線性內插等。

(2)糾錯編碼

數字電視中常用的糾錯編碼,通常採用兩次附加糾錯碼的前向糾錯(FEC)編碼。RS編碼屬於第一個FEC,188位元組後附加16位元組RS碼,構成(204,188)RS碼,這也可以稱為外編碼。

第二個附加糾錯碼的FEC一般採用卷積編碼,又稱為內編碼。外編碼和內編碼結合一起,稱之為級聯編碼。級聯編碼後得到的數據流再按規定的調制方式對載頻進行調制。

糾錯碼的各種類型

1、RS編碼

RS碼即里德-所羅門碼,它是能夠糾正多個錯誤的糾錯碼,RS碼為(204,188,t=8),其中t是可抗長度位元組數,對應的188符號,監督段為16位元組(開銷位元組段)。

實際中實施(255,239,t=8)的RS編碼,即在204位元組(包括同步位元組)前添加51個全「0」位元組,產生RS碼後丟棄前面51個空位元組,形成截短的(204,188)RS碼。RS的編碼效率是:188/204。

2、卷積碼

卷積碼非常適用於糾正隨機錯誤,但是,解碼演算法本身的特性卻是:如果在解碼過程中發生錯誤,解碼器可能會導致突發性錯誤。為此在卷積碼的上部採用RS碼塊,RS碼適用於檢測和校正那些由解碼器產生的突發性錯誤。所以卷積碼和RS碼結合在一起可以起到相互補償的作用。

⑺ 信源編碼的功能是什麼

信源編碼有兩個基本功能:一是提高信息傳輸的有效性,即通過某種壓縮編碼技術設法減少碼元數目以降低碼元速率。二是完成A/D轉換,即當信息源給出的是模擬信號時,信源編碼器將其轉換成數字信號,以實現模擬信號的數字傳輸。

⑻ 通信理論的通信理論

實現C.E.仙農的理想通信系統的各種理論問題。仙農的資訊理論在規定了信源和信道概率特性的基礎上,解決了理想編、解碼器的存在性問題。但是,具體分析實際信源和信道以及具體實現編、解碼器,還涉及到許多技術性的理論問題,這就是通信理論的主要研究對象。
通信理論的形成始自1928年R.V.L.哈特利和H.奈奎斯特分別提出的信息概念和信息率與頻帶的關系,1942年N.維納和1956年В.А.卡切尼可夫各自引用統計觀點來說明雜訊和信號特性,1948年仙農系統地提出了信息理論。這些理論被認為是近代通信理論的基礎。數字技術,尤其是計算機技術的發展,對通信起著越來越大的影響,一方面它們使通信理論的許多原理得以實現,另一方面又提出許多待探討的理論問題。
通信理論的范圍相當廣,它涉及仙農的資訊理論、信源和信道分析中的概率論和隨機過程理論,以及形成信道的電磁波理論,如電波傳播理論、電磁兼容和干擾理論等。編碼器和解碼器理論是通信理論的重要部分。編碼器是指從信源符號到適合信道傳輸的符號之間的全部變換設備,分為信源編碼器和信道編碼器。解碼器是指從信道到信宿(信息接受者)間的全部反變換設備。設計這些設備的主要目的是提高通信的有效性和可靠性,因而通信理論研究的主要問題在於降低信源的信息率,充分利用信道和提高通信質量。

⑼ 用費諾編碼實現信源編解碼

我回答你的問題啊!呵呵,你怎麼不給分啊????實驗命令:clc;clear all;
N=input('N=');%輸入信源符號的個數
s=0;l=0;H=0;
for i=1:N
fprintf('第%d個',i);
p(i)=input('p=');%輸入信源符號概率分布矢量,p(i)<1
if p(i)<=0
error('不符合概率分布')
end
s=s+p(i)
H=H+(- p(i)*log2(p(i)));%計算信源信息熵
end
if (s<=0.999999||s>=1.000001)
error('不符合概率分布')
end
tic;
for i=1:N-1 %按概率分布大小對信源排序
for j=i+1:N
if p(i)<p(j)
m=p(j);p(j)=p(i);p(i)=m;
end
end
end
x=f1(1,N,p,1);
for i=1:N %計算平均碼長
L(i)=length(find(x(i,:)));
l=l+p(i)*L(i);
end
n=H/l; %計算編碼效率
fprintf('按概率降序排列的碼字:\n');
disp(x) %顯示按概率降序排列的碼字
fprintf('平均碼長:\n');
disp(l)% 顯示平均碼長
fprintf('信源信息熵:\n');
disp(H)%顯示信源信息熵
fprintf('編碼效率:\n');
disp(n) %顯示編碼效率
fprintf('計算耗時time= %f\n',toc);
再建立兩個M文件:%函數f1存放於f1.m
function x=f1(i,j,p,r)
global x;
x=char(x);
if(j<=i)
return;
else
q=0;
for t=i:j %對於區間[i,j]自上而下求累加概率值
q=p(t)+q;y(t)=q;
end
for t=i:j%把所有自上而下的累加概率值與該區間總概率值減該累加概率值之差取絕對值存在一數組
v(t)=abs(y(t)-(q-y(t)));
end
for t=i:j
if(v(t)==min(v)) %求該數組中最小的一個值來確定分界點位置
for k=i:t %賦值碼字
x(k,r)='0';
end
for k=(t+1):j
x(k,r)='1';
end
d=t;
f1(i,d,p,r+1); %遞歸調用及相互調用
f2(d+1,j,p,r+1);
f1(d+1,j,p,r+1);
f2(i,d,p,r+1);
else
end
end
end
return;第二個:%函數f2存放於f2.m
function x=f2(i,j,p,r)
global x;
x=char(x);
if(j<=i)
return;
else
q=0;
for t=i:j %對於區間[i,j]自上而下求累加概率值
q=p(t)+q;y(t-i+1)=q;
end
for t=1:j-(i-1)%把所有自上而下的累加概率值與該區間總概率值減該累加概率值之差取絕對值存在一數組
v(t)=abs(y(t)-(q-y(t)));
end
for t=1:j-(i-1)
if(v(t)==min(v)) %求該數組中最小的一個值來確定分界點位置
d=t+i-1;
for k=i:d %賦值碼字
x(k,r)='0';
end
for k=(d+1):j
x(k,r)='1';
end
f2(d+1,j,p,r+1);%遞歸調用及相互調用
f1(i,d,p,r+1);
f2(i,d,p,r+1);
f1(d+1,j,p,r+1);
else
end
end
end
return;

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:333
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:374
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:609
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:29
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:103
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:939
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:736
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:800
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:507
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:369