文章目錄
本博客為系列博客,主要講解各基帶算法的原理與應用,包括:viterbi解碼、Turbo編解碼、Polar編解碼、CORDIC算法、CRC校驗、FFT/DFT、QAMtiaozhi/解調、QPSK調制/解調。其他博客鏈接如下:
- 探秘基帶算法:從原理到5G時代的通信變革【一】引言
- 探秘基帶算法:從原理到5G時代的通信變革【二】Viterbi解碼
- 探秘基帶算法:從原理到5G時代的通信變革【三】Turbo 編解碼
- 探秘基帶算法:從原理到5G時代的通信變革【四】Polar 編解碼(一)
- 探秘基帶算法:從原理到5G時代的通信變革【四】Polar 編解碼(二)
- 探秘基帶算法:從原理到5G時代的通信變革【五】CORDIC算法
- 探秘基帶算法:從原理到5G時代的通信變革【六】CRC 校驗
- 探秘基帶算法:從原理到5G時代的通信變革【七】FFT/DFT
- 探秘基帶算法:從原理到5G時代的通信變革【八】QAM 調制 / 解調
- 探秘基帶算法:從原理到5G時代的通信變革【九】QPSK調制/解調
- 探秘基帶算法:從原理到5G時代的通信變革【十】基帶算法應用與對比
2.2 Turbo 編解碼
2.2.1 基本概念與系統構成
Turbo 碼作為一種強大的信道編碼技術,在現代通信系統中占據著重要地位。它的基本概念源于對傳統編碼方式的突破與創新,旨在實現更接近香農理論極限的性能。
香農理論極限
信道容量理論的定義與核心概念
信道容量(Channel Capacity)是信息論中的一個核心概念,用于描述通信信道所能傳輸的最大信息量。它是衡量信道性能的重要指標,由香農(Claude Shannon)在其著名的論文《通信的數學理論》中首次提出。信道容量表示在單位時間內,通過某一信道能夠可靠傳輸的最大比特數。對于離散無記憶信道(Discrete Memoryless Channel, DMC),信道容量 C C C 的公式為:
C = max ? p ( x ) I ( X ; Y ) C = \max_{p(x)} I(X; Y) C=p(x)max?I(X;Y)
其中, I ( X ; Y ) I(X; Y) I(X;Y) 表示輸入隨機變量 X X X 和輸出隨機變量 Y Y Y 之間的互信息, p ( x ) p(x) p(x) 是輸入符號的概率分布。互信息 I ( X ; Y ) I(X; Y) I(X;Y) 反映了輸入和輸出之間的依賴關系,其值越大,說明信道傳遞的信息越多。
香農公式與連續信道容量
對于加性高斯白噪聲(Additive White Gaussian Noise, AWGN)信道,信道容量可以通過香農公式計算。假設信道帶寬為 B B B Hz,信號功率為 S S S,噪聲功率譜密度為 N 0 N_0 N0?,則信道容量為:
C = B log ? 2 ( 1 + S N 0 B ) C = B \log_2(1 + \frac{S}{N_0 B}) C=Blog2?(1+N0?BS?)
這里的 S N 0 B \frac{S}{N_0 B} N0?BS? 表示信噪比(Signal-to-Noise Ratio, SNR)。該公式表明,信道容量隨帶寬和信噪比的增加而增大。然而,當帶寬趨于無窮大時,信道容量并不會無限增長,而是受到噪聲功率的限制。
例如,在實際通信系統中,如果帶寬為 B = 1 MHz B = 1 \, \text{MHz} B=1MHz,信噪比為 S N R = 10 dB SNR = 10 \, \text{dB} SNR=10dB,則信道容量可以計算為:
C = 1 × log ? 2 ( 1 + 10 ) ≈ 3.32 Mbps C = 1 \times \log_2(1 + 10) \approx 3.32 \, \text{Mbps} C=1×log2?(1+10)≈3.32Mbps
這說明在該條件下,信道每秒最多可以傳輸約 3.32 兆比特的數據。
不同類型信道的容量分析
根據信道特性的不同,信道容量可以分為多種類型。例如,對于二進制對稱信道(Binary Symmetric Channel, BSC),其轉移概率為 p p p,即每個比特被翻轉的概率為 p p p。在這種情況下,信道容量為:
C = 1 ? H ( p ) C = 1 - H(p) C=1?H(p)
其中, H ( p ) H(p) H(p) 是二元熵函數,定義為:
H ( p ) = ? p log ? 2 p ? ( 1 ? p ) log ? 2 ( 1 ? p ) H(p) = -p \log_2 p - (1-p) \log_2 (1-p) H(p)=?plog2?p?(1?p)log2?(1?p)
二進制對稱信道的容量反映了在給定誤碼率的情況下,信道能夠可靠傳輸的最大信息量。當 p = 0 p = 0 p=0 或 p = 1 p = 1 p=1 時,信道容量達到最大值 C = 1 C = 1 C=1;當 p = 0.5 p = 0.5 p=0.5 時,信道完全不可靠,容量降為零。
信道容量的實際應用
信道容量理論在現代通信系統設計中具有重要意義。它不僅為工程師提供了理論上限,還指導了編碼和調制技術的發展。例如,極化碼(Polar Code)和低密度奇偶校驗碼(Low-Density Parity-Check Code, LDPC)等糾錯碼的設計目標就是盡可能接近信道容量。
此外,信道容量的概念還可以擴展到多用戶通信場景。在多用戶信道中,容量區域(Capacity Region)描述了所有用戶能夠同時可靠傳輸的最大速率集合。例如,在廣播信道(Broadcast Channel)中,發送端需要為多個接收端分配資源,使得每個用戶的速率都盡可能接近其理論極限。
總之,信道容量理論不僅是信息論的基礎,也是現代通信技術發展的關鍵驅動力。通過對信道容量的研究,我們可以更好地理解通信系統的性能極限,并設計出更高效的通信方案。
Turbo 碼的系統構成主要由交織器、編碼器和迭代解碼器三個關鍵部分組成。
交織器是 Turbo 碼實現優異性能的關鍵組件之一,其作用是打亂輸入信息序列的順序,使原本具有相關性的信息比特在經過交織后變得更加隨機。這種隨機化處理有效地增加了編碼的隨機性,減小了分量編碼器輸出校驗序列的相關性,從而提高了碼重。例如,在 LTE 系統中采用的 QPP 交織器,通過特定的多項式計算或遞推計算來實現交織操作,只需要進行簡單的運算,不需要大量的查表操作,節省了運算時間和運算復雜度。
編碼器部分采用了兩個卷積編碼器,這兩個編碼器通常被稱為分量編碼器。分量編碼器使用遞歸系統卷積碼(RSC),這種編碼方式能夠充分利用信息序列的前后相關性,從而改善碼的比特誤碼率性能。在編碼過程中,一個分量編碼器直接對信源的信息序列分組進行編碼,另一個分量編碼器則對經過交織器交織后的信息序列分組進行編碼。信息位一路直接進入復用器,另一路經兩個編碼器后得到兩個信息冗余序列,再經恰當組合,與信息位一起通過信道傳輸。下圖展示了 Turbo 碼編碼器的基本結構,從圖中可以清晰看到交織器、分量編碼器以及復用器之間的連接關系和數據流向。
圖:Turbo 碼編碼器基本結構
迭代解碼器是 Turbo 碼實現高性能的核心所在,它利用迭代譯碼算法來提高解碼性能。在接收端,迭代解碼器通過多次迭代,不斷利用兩個分量譯碼器之間的反饋信息,逐步逼近正確的解碼結果。隨著迭代次數的增加,解碼的準確性不斷提高,但當達到某個迭代次數時,誤碼率會趨于穩定,此時再增加迭代次數對性能提升的效果不明顯。
Turbo碼依靠迭代譯碼解決計算復雜性問題,通過在編譯碼器中交織器和解交織器的使用,有效地實現隨機性編譯碼的思想,通過短碼的有效結合實現長碼,達到了接近Shannon理論極限的性能。
2.2.2 編碼過程分步解析
Turbo的編碼器由兩個并行的分量編碼器組成。分量編碼器的選擇一般是卷積碼。在Turbo碼中,輸入序列在進入第二個編碼器時須經過一個交織器 ,用于將序列打亂。兩個編碼器的輸出共同作為冗余信息添加到信息序列之后,對抗信道引起的錯誤。
交織器
- 什么是交織器?
首先,輸入的信息數據序列通過一個交織器(Interleaver)。交織器的作用是重新排列信息位的順序,以分散可能的突發錯誤。這種重新排列有助于在后續解碼過程中更有效地糾正錯誤。交織器實際上是一個一對一的映射函數,作用是將輸入信息序列中的比特位置進行重置,以減小分量編碼器輸出校驗序列的相關性(減小兩個RSC編碼器輸入序列的相關性,使二者編碼過程趨于獨立)并且提高碼重(碼字中1的數目)。例如,假設原始信息序列為“101010”,經過交織器后可能會變為“110010”。交織器的設計可以是固定的,也可以是基于特定算法動態調整的。
交織器的功能是對輸入信息序列進行重新排列。假設原始信息序列為$ x = [x_0, x_1, x_2, \dots, x_{N-1}] $,經過交織器后得到的新序列為 $ x’ = [x_{\pi(0)}, x_{\pi(1)}, x_{\pi(2)}, \dots, x_{\pi(N-1)}] $,其中 $ \pi(i) $ 是一個置換函數,用于定義重新排列的規則。
- 如何實現交織器?
參數定義
- $ k $: 信息塊的長度,這里取 $ k = 960 $。
- $ s $: 原始數據序號,范圍從 1 到 $ k $。
- $ k = k_1 \times k_2 $: 將信息塊分解為兩個因子,這里取 $ k_1 = 4 $ 和 $ k_2 = 240 $。
交織過程
交織器通過一系列數學運算將原始數據序號 $ s $ 映射到新的序號 $ \Pi(s) $。以下是具體的步驟:
-
計算變量 $ m $:
m = ( s ? 1 ) m o d 2 m = (s - 1) \mod 2 m=(s?1)mod2
這一步確定了 $ s $ 是否為奇數或偶數。如果 $ s $ 是奇數,則 $ m = 0 $;如果是偶數,則 $ m = 1 $。 -
計算變量 $ i $:
i = floor ( s ? 1 2 k 2 ) i = \text{floor} \left( \frac{s - 1}{2k_2} \right) i=floor(2k2?s?1?)
這一步確定了 $ s $ 在整個信息塊中的位置。$ k_2 $ 是信息塊的一個因子,通過除以 $ 2k_2 $ 并取整,可以確定 $ s $ 所屬的子塊。 -
計算變量 $ j $:
j = floor ( s ? 1 2 ) ? i k 2 j = \text{floor} \left( \frac{s - 1}{2} \right) - ik_2 j=floor(2s?1?)?ik2?
這一步進一步細化了 $ s $ 的位置。首先計算 $ s $ 減去 1 后除以 2 的整數部分,然后減去 $ i \times k_2 $,得到 $ s $ 在當前子塊中的相對位置。 -
計算變量 $ t $:
t = ( 19 i + 1 ) m o d ( k 1 2 ) t = (19i + 1) \mod \left( \frac{k_1}{2} \right) t=(19i+1)mod(2k1??)
這一步通過模運算確定了一個周期性的值。這里使用了一個線性函數 $ 19i + 1 $,并通過模運算將其限制在一個較小的范圍內(即 $ \frac{k_1}{2} $),確保 $ t $ 的值在一個固定的周期內變化。 -
計算變量 $ q $:
q = t m o d 8 + 1 q = t \mod 8 + 1 q=tmod8+1
這一步通過模運算和加法確定了一個特定的值。這里將 $ t $ 對 8 取模,并加上 1,確保 $ q $ 的值在 1 到 8 之間。 -
計算變量 $ c $:
c = ( p q j + 21 m ) m o d k 2 c = (p_qj + 21m) \mod k_2 c=(pq?j+21m)modk2?
這一步結合了前面的變量進行復雜的模運算。$ p_q $ 是一個依賴于 $ q $ 的參數,通常是一個預定義的數組。這里將 $ p_q $ 與 $ j $ 相乘,并加上 $ 21m $,最后對 $ k_2 $ 取模,得到 $ c $。 -
計算最終的交織后序號 $ \Pi(s) $:
Π ( s ) = 2 ( t + c k 1 / 2 + 1 ) ? m \Pi(s) = 2(t + ck_1/2 + 1) - m Π(s)=2(t+ck1?/2+1)?m
這一步綜合所有之前的計算結果,得到最終的交織后序號。首先將 $ t 、 、 、 c $ 和 $ k_1 $ 結合起來,形成一個新的值。然后根據 $ m $ 的值(奇偶性)進行調整,最終得到 $ \Pi(s) $。
示例計算
假設 $ s = 1 $,我們逐步計算:
- $ m = (1 - 1) \mod 2 = 0 $
- $ i = \text{floor} \left( \frac{1 - 1}{2 \times 240} \right) = 0 $
- $ j = \text{floor} \left( \frac{1 - 1}{2} \right) - 0 \times 240 = 0 $
- $ t = (19 \times 0 + 1) \mod \left( \frac{4}{2} \right) = 1 \mod 2 = 1 $
- $ q = 1 \mod 8 + 1 = 2 $
- $ c = (p_2 \times 0 + 21 \times 0) \mod 240 = 0 $
- $ \Pi(s) = 2(1 + 0 \times 2 + 1) - 0 = 4 $
因此,原始序號 $ s = 1 $ 經過交織后的序號 $ \Pi(s) = 4 $。
總結
通過上述步驟,我們可以將任意原始數據序號 $ s $ 映射到一個新的序號 $ \Pi(s) $,從而實現對信息序列的交織。這種交織方法有助于在后續的編碼和解碼過程中更有效地處理突發錯誤,提高通信系統的可靠性。
遞歸系統卷積編碼器
接下來,交織后的信息序列和原始序列被分成兩路,分別送入兩個遞歸系統卷積編碼器(Recursive Systematic Convolutional Encoder, RSC)。所謂卷積碼,即輸出為輸入和一段已知序列的卷積。RSC編碼器是一種特殊的卷積編碼器,它不僅輸出信息位本身,還輸出根據信息位生成的冗余位。每個RSC編碼器獨立地對輸入序列進行編碼,但它們的輸出會有所不同,因為輸入序列已經被交織器打亂。例如,第一路信息序列可能被編碼為“110010 101010”,而第二路則可能編碼為“101010 010101”。
遞歸系統卷積編碼器是 Turbo 碼的核心組成部分之一。它的輸出由輸入序列通過線性反饋移位寄存器(LFSR)生成。假設 RSC 編碼器的約束長度為 K K K,則其生成多項式可以表示為:
G 0 ( D ) = 1 + g 1 D + g 2 D 2 + ? + g K ? 1 D K ? 1 G_0(D) = 1 + g_1D + g_2D^2 + \dots + g_{K-1}D^{K-1} G0?(D)=1+g1?D+g2?D2+?+gK?1?DK?1
其中:
-
$ D $ 是延遲算子。
-
$ g_i $ 是反饋路徑中的系數,取值為 0 或 1。
-
輸出序列可以通過以下公式計算:
Y ( D ) = X ( D ) + X ( D ) ? G 0 ( D ) Y(D) = X(D) + X(D) \cdot G_0(D) Y(D)=X(D)+X(D)?G0?(D)
其中 $ X(D) $ 是輸入序列的多項式表示,$ Y(D) $ 是冗余位的多項式表示。
卷積碼是一種線性時不變的編碼方法,其輸出是輸入序列與一個已知序列(稱為生成多項式)的卷積。在卷積碼中,每個輸入數據位都會影響后續多個輸出位。RSC 編碼器是一種特殊的卷積碼編碼器,它不僅輸出信息位本身,還輸出根據信息位生成的冗余位。RSC 編碼器通常包含移位寄存器和模 2 加法器。
- RSC 編碼器結構
RSC 編碼器的結構如圖所示,主要包括以下幾個部分:
- 輸入:輸入數據序列 $ X $。
- 輸出:三個輸出序列 $ X , , , Y_0 , , , Y_1 $。
- 移位寄存器:圖中有三個移位寄存器(標記為 D),用于存儲前幾個輸入位。
- 模 2 加法器:圖中有兩個模 2 加法器(標記為圓形符號),用于進行模 2 加法運算。
- 編碼過程
RSC(Recursive Systematic Convolutional)編碼器的生成多項式 $ G(D) $,具體如下:
G ( D ) = [ 1 , n 0 ( D ) d ( D ) , n 1 ( D ) d ( D ) ] G(D) = \left[ 1, \frac{n_0(D)}{d(D)}, \frac{n_1(D)}{d(D)} \right] G(D)=[1,d(D)n0?(D)?,d(D)n1?(D)?]
其中:
- $ n_0(D) = 1 + D + D^3 $
- $ n_1(D) = 1 + D + D^2 + D^3 $
- $ d(D) = 1 + D^2 + D^3 $
生成多項式 $ G(D) $ 是一個向量,包含三個元素:
- 第一個元素是 1,表示原始輸入數據直接輸出。
- 第二個元素是 $ \frac{n_0(D)}{d(D)} $,表示通過模 2 加法器和移位寄存器生成的冗余位之一。
- 第三個元素是 $ \frac{n_1(D)}{d(D)} $,表示通過另一個模 2 加法器和移位寄存器生成的冗余位。
假設輸入序列為 $ X = [x_1, x_2, x_3, \ldots] $,我們逐步解釋編碼過程:
-
初始狀態:
- 移位寄存器初始化為全零狀態。
-
處理第一個輸入位 $ x_1 $:
- 輸入位 $ x_1 $ 進入編碼器。
- 模 2 加法器計算 $ x_1 $ 與移位寄存器中的值的模 2 和。
- 輸出 $ X $ 直接等于 $ x_1 $。
- 輸出 $ Y_0 $ 和 $ Y_1 $ 分別是通過不同的模 2 加法路徑得到的結果。
- 將 $ x_1 $ 移入移位寄存器的第一個位置,其他位置依次右移。
-
處理第二個輸入位 $ x_2 $:
- 輸入位 $ x_2 $ 進入編碼器。
- 模 2 加法器計算 $ x_2 $ 與移位寄存器中的值的模 2 和。
- 輸出 $ X $ 直接等于 $ x_2 $。
- 輸出 $ Y_0 $ 和 $ Y_1 $ 分別是通過不同的模 2 加法路徑得到的結果。
- 將 $ x_2 $ 移入移位寄存器的第一個位置,其他位置依次右移。
-
重復上述步驟:
- 對于每一個新的輸入位,重復上述步驟,直到所有輸入位都被處理完畢。
- 具體示例
假設輸入序列為 $ X = [1, 0, 1, 0] $,移位寄存器長度為 3,生成多項式為 $ G(D) = 1 + D + D^2 $。
-
初始狀態:
- 移位寄存器:[0, 0, 0]
-
處理第一個輸入位 $ x_1 = 1 $:
- 輸出 $ X $:1
- 輸出 $ Y_0 $:1 (1 + 0 + 0)
- 輸出 $ Y_1 $:1 (1 + 0 + 0)
- 移位寄存器:[1, 0, 0]
-
處理第二個輸入位 $ x_2 = 0 $:
- 輸出 $ X $:0
- 輸出 $ Y_0 $:1 (0 + 1 + 0)
- 輸出 $ Y_1 $:0 (0 + 0 + 0)
- 移位寄存器:[0, 1, 0]
-
處理第三個輸入位 $ x_3 = 1 $:
- 輸出 $ X $:1
- 輸出 $ Y_0 $:0 (1 + 0 + 1)
- 輸出 $ Y_1 $:1 (1 + 0 + 0)
- 移位寄存器:[1, 0, 1]
-
處理第四個輸入位 $ x_4 = 0 $:
- 輸出 $ X $:0
- 輸出 $ Y_0 $:1 (0 + 1 + 0)
- 輸出 $ Y_1 $:1 (0 + 0 + 1)
- 移位寄存器:[0, 1, 0]
- 歸零處理
在數據序列編碼完成后,歸零處理使分量編碼器RSC中的移位寄存器恢復成編碼前的零狀態,從而使編譯碼變得簡單易于控制。這一過程對于Turbo碼尤為重要,因為它確保了編碼器的狀態不會影響后續的數據編碼。
卷積碼編碼器是通過在輸入信息序列后加入 m(編碼約束長度)個“0”就可以使編碼狀態回到全“0”狀態,使網格終止。但對于RSC編碼器,由于有反饋,RSC編碼器的狀態很難確定,加“0”的策略不能達到網格終止的目的;而且,在編碼器I回到了全“0”狀態,由于加入了交織器,編碼器II卻不一定回到全“0”狀態,所以需要尋求別的辦法來終止網格。
- 最簡單的方法就是在輸入端設置開關電路來實現網格的終止。
- 另一種方法就是初始狀態為全“0”,在RSC編碼器I的信息序列后加入 m 個“0”比特,使其狀態回到全“0”從而使網格終止,而編碼器II不終止,處于開放狀態,可以在任何狀態停止編碼。
Turbo碼的歸零處理步驟如下:首先,將所有需要編碼的數據序列輸入到編碼器中,完成整個編碼過程。在完成編碼后,通過切換分量碼開關,使得各個寄存器中的遺留狀態值和反饋結構生成一些尾部比特。這些尾部比特與自身進行異或操作,以確保新進入寄存器的值為0。重復上述步驟,直到所有移位寄存器中的值都變為0。如果寄存器有m個,則經過m次這樣的操作后,寄存器將全部為0。
實際操作示例如下:前k個時鐘,開關位于a,信息被輸入到編碼器中。在k個時鐘之后的6個時鐘,開關位于位置b。在這6個時鐘的前3個時鐘里,只有RSC1輸出;在這6個時鐘的后3個時鐘里,只有RSC2輸出。因此,終止序列是(X, Y0, Y1, X’, Y0’, Y1’)。
復接器
現代通信系統中,為了實現高速數據傳輸,系統對頻帶利用率要求較高。一般Turbo碼的碼率只有1/3,因此頻帶利用率不高。為了解決這一問題,在編碼器中加入了刪余處理。刪余處理的具體操作是在編碼完成后,將分量碼輸出的兩路校驗信息輸入刪余器,按照一定的規則刪除一部分校驗信息,減小信息的冗余度,從而提高編碼效率。刪余處理根據各系統自定。
Turbo碼的刪余就是通過刪除冗余的校驗位來調節碼率,也稱為穿刺。Turbo碼采用兩個成員編碼器,產生的冗余比特比一般情況多一倍,這在很多場合下并不需要,但又不能排斥任何一個編碼器,折衷的辦法就是按一定規律輪流選用兩個編碼器的校驗比特。例如,采用兩個1/2成員編碼器時,如果不刪余,信息位加兩個編碼器的校驗位將產生1/3的碼流,但如果令編碼器1的校驗流乘以一個刪余矩陣,令編碼器2的校驗流乘以刪余矩陣P即可,其中1代表傳輸此比特,0表示不傳輸,這樣就產生了在編碼器1和2之間輪流取值的效果。一般情況下,設兩個編碼器的校驗位生成矩陣為q和q’,m和m’為交織前后的N位信息位流,則m和q分別為1xN的校驗位矢量;刪余矩陣P為Nx2矩陣,其中均為Nx1的列矢量,由0或1值組成,分別表示對兩個編碼器校驗位的選擇情況,1表示該編碼比特作為輸出比特傳輸到對端,0表示該編碼比特不進行傳輸。
復接器(Puncturer)通過選擇性地刪除部分冗余位來調整編碼率。假設編碼器的原始輸出為 $ [X, Y_1, Y_2] $,其中 $ X $ 是原始信息位,$ Y_1 $ 和 $ Y_2 $ 是兩個編碼器生成的冗余位。如果目標編碼率為 $ R_c = \frac{1}{2} $,那么復接器可以選擇保留每兩個冗余位中的一個,例如:
Z = [ X , Y 1 , X , Y 2 , X , Y 1 , … ] Z = [X, Y_1, X, Y_2, X, Y_1, \dots] Z=[X,Y1?,X,Y2?,X,Y1?,…]
最終輸出序列 $ Z $ 的長度將是原始信息序列長度的兩倍。
復接單元的主要作用是將多個編碼器的輸出合并成一個單一的比特流,以便在信道中傳輸。在Turbo編碼中,由于存在多個并行工作的卷積編碼器,它們的輸出需要通過復接單元進行合并。復接單元按照預定的順序或模式,將不同編碼器的輸出比特交織在一起。這個過程需要確保每個編碼器的輸出比特在最終的比特流中都有合適的位置,以便在解碼時能夠正確地分離和識別。復接單元還需要處理由于穿刺而產生的空位。當某些比特被穿刺單元刪除后,復接單元需要相應地調整其余比特的位置,以確保輸出的比特流在長度和格式上都是正確的。
在上表中,0表示刪除這個數據,1表示保留這個數據。注意,終止部分(尾比特)的穿刺表與前面數據的穿刺表不一定相同。表格列出了不同碼率下的刪余模式,每一行代表一種刪余模式,包括刪余模式ID、碼率以及具體的刪余模式。例如,刪余模式ID為5的模式,碼率為2/5,其刪余模式為:(1;0;0;0;0 | 1;0;1;0;0;1 | 0;0;1;0;0;1 | 1;0;1;0;0;1) (1;0;1;0;0;1 | 0;0;1;0;0;1 | 1;0;1;0;0;1 | 1;0;1;0;0;1)。對于每個碼率,刪余表應當從左到右,然后從上到下依次讀取。
通過這些步驟,可以有效地減少冗余信息,提高頻帶利用率,從而實現更高效的通信。
參考資料:turbo編碼原理以及matlab實現-CSDN博客
總結
Turbo的編碼器非常簡單,由兩個并行的卷積碼編碼器 (Encoder) 組成。所謂卷積碼,即輸出為輸入和一段已知序列的卷積。與其對應的分組碼則是將序列分段,每段序列和編碼矩陣相乘得到輸出序列(在后續發展中,Turbo碼也擁有了分組碼版本)。在Turbo碼中,輸入序列 (Input)在進入第二個編碼器時須經過一個交織器 (Interleaver),用于將序列打亂。兩個編碼器的輸出(Output I 和 II)共同作為冗余信息添加到信息序列(Systematic output)之后,對抗信道引起的錯誤。
參考資料:Turbo 碼: 一個輝煌時代的落幕 - 知乎
2.2.3 譯碼算法分類與原理
Turbo碼的強大主要來源于其解碼器
Turbo碼的強大之處主要體現在其解碼器的設計上。從下圖Turbo碼解碼器中可以看到,整個解碼過程與編碼過程形成對應關系。信息序列(Systematic data)和相應的冗余序列(Parity 1 and Parity 2)分別輸入兩個解碼器,而后各自的輸出經過一個減法運算并通過交織(Interleaver)和解交織(Deinterleaver)后反饋給另一個解碼器。Turbo的核心正是這一減法和反饋機制,圖中由紅線標注。這一小小的連線堪稱“上帝之手”,它將解碼技術,甚至是信息理論推向了一個新的時代。
為什么要做減法呢?因為輸出信息被分解為內信息(intrinsic information)和外信息(extrinsic information)。通過減法從輸出信息中取出外信息并將其反饋給另一個解碼器。在迭代解碼過程中,接收信息錯誤不斷地被糾正,最后無線逼近香農極限。整個解碼過程信息在兩個極為簡單的解碼器間不斷地輪轉,像一臺無比強大的渦輪機,因而得名Turbo。
理論基礎
Turbo碼的解碼過程基于軟輸入軟輸出(Soft Input Soft Output, SISO)算法,其中最常用的算法是Log-MAP算法。該算法通過計算對數似然比(Log Likelihood Ratio, LLR)來估計每個比特的概率。具體來說,假設接收到的信號為 $ r $,發送的比特為 $ x $,則LLR定義為:
L ( x ) = log ? ( P ( x = 1 ∣ r ) P ( x = 0 ∣ r ) ) L(x) = \log \left( \frac{P(x=1|r)}{P(x=0|r)} \right) L(x)=log(P(x=0∣r)P(x=1∣r)?)
這里的 $ P(x=1|r) $ 和 $ P(x=0|r) $ 分別表示在接收到信號 $ r $ 的條件下,發送比特為1和0的概率。通過計算LLR,可以得到每個比特的可靠度。
迭代解碼的基本思想是利用軟輸入軟輸出(Soft-Input Soft-Output, SISO)解碼器進行多次迭代,每次迭代都會更新對每個比特的可靠性估計。在Turbo碼的解碼過程中,每個分量編碼器(卷積編碼器)的輸出都被視為一個獨立的信道,而迭代解碼就是在這些信道之間傳遞和更新信息。
每次迭代,解碼器都會根據當前的信息(包括接收到的信號和其他解碼器提供的信息)對每個比特做出最佳的判斷。然后,這個判斷會以概率的形式(即軟輸出)傳遞給下一個解碼器。下一個解碼器會利用這個信息,結合自己的判斷,再次更新對每個比特的可靠性估計。這個過程會一直重復,直到達到預設的迭代次數或滿足一定的收斂條件。
解碼過程詳解
在Turbo碼的解碼過程中,信息序列和冗余序列分別輸入到兩個分量解碼器(Component Decoder 1 和 Component Decoder 2)。這兩個解碼器分別處理信息序列的不同部分,并生成各自的輸出。這些輸出包含內信息和外信息兩部分。
- 內信息:直接從接收到的信號中提取的信息。
- 外信息:從另一個解碼器反饋回來的信息。
通過減法運算,從輸出信息中提取出外信息,并將其反饋給另一個解碼器。這個過程不斷迭代,直到達到預定的迭代次數或滿足一定的收斂條件。隨著迭代次數的增加,解碼器能夠逐漸糾正錯誤,最終逼近香農極限。
在Turbo碼的解碼過程中, 內信息(Internal Information) 和 外信息(External Information) 是迭代解碼機制的核心概念,二者通過分量解碼器(Component Decoder)的協作實現錯誤糾正的逐步優化,最終逼近香農極限的性能。
- 內信息
內信息是分量解碼器在單次迭代中直接從接收信號中提取的原始信息,包括 系統位(信息序列的直接傳輸部分) 和 冗余位(編碼器生成的校驗序列)。其核心功能是提供當前解碼步驟的基礎數據支持。例如,在第一個分量解碼器(Decoder 1)中,內信息包含接收到的原始信息序列$ y_1 和第一個編碼器生成的冗余序列 和第一個編碼器生成的冗余序列 和第一個編碼器生成的冗余序列 y_2 $,通過最大后驗概率(MAP)或對數域算法(Log-MAP)計算軟判決輸出。內信息的計算依賴于信道模型(如AWGN或Rayleigh衰落)的統計特性,例如通過信道估計參數(如信噪比)調整軟信息的可靠性權重。此外,內信息還包含當前解碼器自身的狀態轉移信息(如遞歸系統卷積碼的移位寄存器狀態),這些信息通過編碼約束條件幫助修正比特錯誤。
- 外信息的定義與作用
外信息是分量解碼器之間通過迭代反饋傳遞的增量信息,其本質是另一個解碼器基于自身解碼結果提供的先驗概率修正值。例如,Decoder 1的軟輸出中既包含內信息,也包含Decoder 2反饋的外信息。通過減法操作,外信息被提取為$ L_e = L_{total} - L_{in} ,其中 ,其中 ,其中 L_{total} 是解碼器的總軟輸出, 是解碼器的總軟輸出, 是解碼器的總軟輸出, L_{in} $是內信息部分。這一操作避免了信息重復使用,確保每次迭代僅傳遞新的置信度增量。外信息的作用在于:
- 補充視角差異:由于Turbo碼采用交織器(Interleaver)打亂信息序列,兩個分量解碼器處理的是同一數據的不同排列形式,外信息通過交織/解交織操作傳遞互補的糾錯線索。
- 加速收斂:外信息通過加權因子(Tuning Factor)調節其對解碼的影響強度,例如Robertson方案通過動態調整外信息權重,相比固定權重的Berrou方案,誤碼率可降低0.2-0.5 dB。
- 抑制錯誤平層:在高信噪比區域,外信息結合殘留冗余(如信源編碼特性)可進一步消除突發錯誤,將額外編碼增益提升至2 dB。
- 內信息與外信息的交互機制
Turbo解碼的迭代過程通過兩者的動態交互實現性能提升:
- 初始迭代:Decoder 1僅依賴內信息(接收信號)進行初步估計,生成的外信息可能包含較大誤差,但已提供交織后的糾錯線索。
- 反饋循環:Decoder 2將交織后的外信息作為先驗輸入,結合自身內信息(交織后的系統位和第二個冗余序列)優化軟輸出,再通過解交織反饋給Decoder 1。
- 收斂判定:隨著迭代次數增加,外信息的修正幅度逐漸減小,解碼器通過校驗方程或LLR(對數似然比)穩定性判斷是否終止循環。例如,改進的Log-MAP算法通過二次多項式逼近修正函數,在降低復雜度的同時保持外信息傳遞的精度。
交織與解交織
交織器(Interleaver)和解交織器(Deinterleaver)是Turbo碼中的關鍵組件。交織器的作用是重新排列信息序列,使得相鄰的比特在傳輸過程中不會受到相同的干擾。這樣可以提高解碼器的性能,因為它減少了相鄰比特之間的相關性。解交織器則負責將交織后的序列恢復成原始順序。
譯碼算法
Turbo 碼的譯碼算法主要分為基于最大后驗概率(MAP)和軟輸出維特比(SOVA)算法這兩大類。
基于最大后驗概率(MAP)的算法,其核心原理是最小化符號或比特差錯概率。在譯碼過程中,該算法充分考慮了接收序列中每個符號的所有可能取值情況,以及這些取值在不同路徑下出現的概率。通過對這些概率的復雜計算,找到最有可能的發送符號或比特序列。例如,在標準 MAP 算法中,需要計算每個時刻每個狀態下的前向概率和后向概率,然后根據這些概率計算出每個符號的后驗概率,從而確定最有可能的發送符號。在實際應用中,為了降低計算復雜度,常常采用對數域上的 Log - MAP 算法和 Max. Log - MAP 算法等,這些算法通過將大量的乘法運算轉化為加法運算,有效地簡化了算法的復雜性。
軟輸出維特比(SOVA)算法則是最小化序列差錯概率。它基于維特比算法的思想,在網格圖中搜索最優路徑。與傳統維特比算法不同的是,SOVA 算法在每個狀態轉移時,不僅考慮路徑的度量值,還會輸出軟信息,即每個比特為 0 或 1 的概率信息。在譯碼過程中,通過對這些軟信息的迭代處理,逐步逼近正確的解碼結果。在低信噪比環境下,MAP 算法比 SOVA 算法的性能有一定改善,因為 MAP 算法能夠更全面地考慮各種概率情況,但 MAP 算法在每一時刻都要考慮所有路徑,并且其運算是乘法和指數運算,計算復雜度較高;而 SOVA 算法的計算相對簡單,但其性能在某些情況下略遜于 MAP 算法。
- MAP 解碼算法的核心公式
Turbo 碼的解碼通常采用最大后驗概率(MAP)算法或其簡化版本 Log-MAP 算法。MAP 算法的核心思想是基于接收信號計算每個信息位的后驗概率。假設接收序列為 $ r = [r_0, r_1, \dots, r_{N-1}] $,則 MAP 算法的目標是計算每個信息位 $ x_i $ 的后驗概率 $ P(x_i | r) $。
-
前向遞推公式
前向變量 $ \alpha_t(s) $ 表示在時間 $ t $ 處狀態為 $ s $ 的條件下,從初始時刻到時間 $ t $ 的所有可能路徑的概率總和。其遞推公式為:
α t ( s ) = ∑ s ′ α t ? 1 ( s ′ ) ? γ t ? 1 ( s ′ , s ) \alpha_t(s) = \sum_{s'} \alpha_{t-1}(s') \cdot \gamma_{t-1}(s', s) αt?(s)=s′∑?αt?1?(s′)?γt?1?(s′,s)
其中 $ \gamma_{t-1}(s’, s) $ 是從狀態 $ s’ $ 轉移到狀態 $ s $ 的轉移概率。 -
后向遞推公式
后向變量 $ \beta_t(s) $ 表示在時間 $ t $ 處狀態為 $ s $ 的條件下,從時間 $ t+1 $ 到末尾的所有可能路徑的概率總和。其遞推公式為:
β t ( s ) = ∑ s ′ β t + 1 ( s ′ ) ? γ t ( s , s ′ ) \beta_t(s) = \sum_{s'} \beta_{t+1}(s') \cdot \gamma_t(s, s') βt?(s)=s′∑?βt+1?(s′)?γt?(s,s′) -
聯合概率計算
結合前向和后向變量,可以計算任意時間 $ t $ 和狀態 $ s $ 的聯合概率:
P ( s t = s ∣ r ) = α t ( s ) ? β t ( s ) P ( r ) P(s_t = s | r) = \frac{\alpha_t(s) \cdot \beta_t(s)}{P(r)} P(st?=s∣r)=P(r)αt?(s)?βt?(s)?
其中 $ P? $ 是接收序列的總概率。 -
Log-MAP 近似
為了簡化計算,Log-MAP 算法使用對數域近似代替概率運算。例如,對數似然比(LLR)的計算公式為:
L ( x i ) = log ? P ( x i = 1 ∣ r ) P ( x i = 0 ∣ r ) L(x_i) = \log \frac{P(x_i = 1 | r)}{P(x_i = 0 | r)} L(xi?)=logP(xi?=0∣r)P(xi?=1∣r)?
通過迭代更新 LLR 值,解碼器逐步逼近正確的信息序列。
- BCJR算法流程
BCJR算法(Bahl-Cocke-Jelinek-Raviv算法)是Turbo碼解碼中最常用的算法之一。它是一種最大后驗概率(Maximum A Posteriori, MAP)算法,旨在找到最可能的原始信息序列。BCJR算法的基本流程如下:
- 初始化:設置迭代次數、初始狀態概率等參數。對于每個比特,初始化其前向和后向狀態概率。
- 前向遞歸:從時間0開始,逐步計算每個時間點上所有可能狀態的前向概率。前向概率表示在給定接收序列的條件下,到達某個狀態的概率。
- 后向遞歸:從最后一個時間點開始,逐步計算每個時間點上所有可能狀態的后向概率。后向概率表示在給定接收序列和某個狀態的條件下,后續序列的概率。
- 計算比特概率:結合前向和后向概率,計算每個比特為0或1的概率。這些概率就是軟輸出,將作為下一次迭代的輸入。
- 迭代更新:將計算得到的比特概率傳遞給下一個解碼器,并重復步驟2-4。每次迭代后,都會更新對每個比特的可靠性估計。
- 判決和輸出:達到預設的迭代次數或滿足收斂條件后,根據最后的比特概率做出硬判決(即確定每個比特是0還是1),并輸出解碼結果。
BCJR算法通過充分利用Turbo碼的結構特點和迭代解碼的思想,實現了優異的糾錯性能。然而,它也存在計算復雜度高、實現難度大等問題。因此,在實際應用中,通常會采用一些簡化的算法或優化方法來降低復雜度和提高解碼效率。
先驗概率與后驗概率
- 先驗概率
先驗概率是概率論與統計學中的一個基本概念,它指的是在沒有觀察到具體數據或事件發生之前,根據已有知識、經驗或假設對某一事件發生可能性的估計。這種概率反映了我們對某個事件發生的初始認知或信念,通常是在數據分析或模型構建之前就已經確定的。先驗概率是貝葉斯推斷的重要組成部分,與后驗概率形成對比,后者是在結合了觀測數據之后更新的概率。
為了更好地理解先驗概率,我們可以舉一個具體的例子。假設某城市中有兩種出租車公司:綠色出租車公司和藍色出租車公司。已知綠色出租車占全市出租車總數的85%,而藍色出租車占15%。如果我們隨機選擇一輛出租車,那么這輛出租車是綠色的概率就是85%,而它是藍色的概率則是15%。這里的85%和15%就是先驗概率,因為它們是在沒有任何額外信息(例如目擊者描述或其他證據)的情況下,基于整體統計數據得出的結論。
先驗概率可以根據不同的情況分為多種類型。一種常見的分類是“主觀先驗”和“客觀先驗”。主觀先驗是指基于個人經驗、直覺或專家意見得出的概率估計,這類先驗可能因人而異。例如,在預測某種新產品的市場需求時,市場分析師可能會根據自己的行業經驗給出一個主觀的先驗概率。而客觀先驗則是基于大量歷史數據或統計規律計算得出的概率,具有更高的客觀性和可重復性。例如,在醫學診斷中,某種疾病的發病率可以通過大規模流行病學調查得到,這樣的概率就可以作為客觀先驗。
此外,在貝葉斯統計中,先驗概率還可以進一步細分為“無信息先驗”和“有信息先驗”。無信息先驗是指當缺乏明確的背景知識或數據時,假設所有可能的結果具有相等的概率。例如,在拋擲一枚硬幣時,如果沒有其他信息,我們會默認正面和反面出現的概率各為50%。而有信息先驗則是在已有數據或知識的基礎上設定的概率分布。例如,在預測某股票價格波動時,可以利用歷史交易數據來設定一個更精確的先驗概率分布。
總之,先驗概率為我們提供了一種在缺乏具體觀測數據時對事件發生可能性進行初步估計的方法。它是貝葉斯推斷的基礎,并在許多領域中得到了廣泛應用,包括機器學習、人工智能、醫學診斷以及金融分析等。通過合理設定先驗概率,我們可以更有效地結合新數據進行決策和預測。
- 后驗概率
后驗概率是概率論與統計學中的一個重要概念,它描述了在已知某些觀測結果的情況下,某一事件發生的條件概率。這個概念來源于貝葉斯定理,該定理提供了一種計算后驗概率的方法。后驗概率的核心思想是通過結合先驗知識(即在觀察數據之前對事件發生概率的估計)和新獲得的數據(即觀察到的結果),來更新我們對某一事件發生可能性的認知。
為了更好地理解后驗概率,我們可以從一個具體的例子入手。假設有一家醫院正在使用一種檢測某種疾病的測試方法,這種測試的準確率為95%,即如果一個人確實患有該疾病,那么測試呈陽性的概率為95%;同時,如果一個人沒有患病,測試呈陰性的概率也為95%。現在我們知道,在整個人群中,只有1%的人患有這種疾病。如果我們隨機選擇一個人進行測試,并且測試結果呈陽性,那么這個人真正患病的概率是多少?這就是一個典型的需要計算后驗概率的問題。
在這個問題中,我們需要用到貝葉斯定理,其公式為:$ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} $ 其中,$ P(A|B) $ 表示在事件B已經發生的條件下,事件A發生的概率,也就是我們要計算的后驗概率。在這個例子中,事件A表示某人確實患有該疾病,事件B表示測試結果呈陽性。因此,$ P(A|B) $ 就是我們要找的答案——在測試結果呈陽性的條件下,某人真正患病的概率。而 $ P(B|A) $ 則表示在某人確實患病的情況下,測試結果呈陽性的概率,也就是測試的靈敏度,這里為95%。$ P(A) $ 是患病的先驗概率,這里是1%。最后,$ P(B) $ 是測試結果呈陽性的總概率,可以通過全概率公式計算得出。
后驗概率的概念可以進一步擴展到不同的分類和應用場景中。例如,在機器學習領域,后驗概率常用于分類問題。假設我們有一個分類模型,用于判斷一張圖片是否包含貓。模型會輸出每種類別的后驗概率,例如“這張圖片包含貓的概率為80%,不包含貓的概率為20%”。這些后驗概率可以幫助我們做出更可靠的決策,尤其是在多類別分類任務中。此外,在自然語言處理中,后驗概率也被廣泛應用于語言模型的生成過程,例如根據前面的詞序列預測下一個詞的概率。
總之,后驗概率是一個動態調整的過程,它結合了先驗知識和新的觀測數據,從而提供了更精確的概率估計。這一概念不僅在理論研究中具有重要意義,也在實際應用中發揮了巨大作用,尤其是在需要基于有限數據做出決策的情境下。
- 全概率公式
全概率公式是概率論中的一個重要工具,用于計算某個事件發生的總概率。它通過將復雜事件分解為多個互不相交的簡單事件(即樣本空間的一個劃分),然后利用條件概率和加法法則來求解目標事件的概率。全概率公式的核心思想是**“化整為零”,即將一個復雜的概率問題拆解成若干個更簡單的子問題,再通過加權求和的方式得到最終結果**。
為了更好地理解全概率公式的含義,我們可以從一個具體的例子入手。假設某公司有三個工廠生產同一種產品,分別記為工廠A、B和C。已知這三個工廠的產品分別占總產量的30%、50%和20%,而每個工廠的產品中次品率分別為1%、2%和3%。現在我們需要計算從所有產品中隨機抽取一件產品,這件產品是次品的概率。這是一個典型的全概率公式應用問題,其中目標事件是從所有產品中抽取一件次品,而劃分事件則是產品來自哪個工廠。
全概率公式的數學表達形式如下:設事件 $ B $ 是我們感興趣的事件,而 $ A_1, A_2, \dots, A_n $ 是樣本空間的一組劃分(即這些事件兩兩互斥且它們的并集等于整個樣本空間)。那么事件 $ B $ 的概率可以表示為:
$ P(B) = \sum_{i=1}^{n} P(B|A_i) \cdot P(A_i) $
其中,$ P(B|A_i) $ 表示在事件 $ A_i $ 已經發生的條件下,事件 $ B $ 發生的條件概率;$ P(A_i) $ 則是事件 $ A_i $ 自身的概率。這個公式的意義在于,它將事件 $ B $ 的總概率分解為各個劃分事件 $ A_i $ 對應的部分概率之和。回到剛才的例子中,我們可以將公式具體化。令事件 $ B $ 表示“隨機抽取的產品是次品”,而事件 $ A_1, A_2, A_3 $ 分別表示“產品來自工廠A、B和C”。根據題意,$ P(A_1) = 0.3 , , , P(A_2) = 0.5 , , , P(A_3) = 0.2 $,并且 $ P(B|A_1) = 0.01 , , , P(B|A_2) = 0.02 , , , P(B|A_3) = 0.03 $。因此,根據全概率公式:
$ P(B) = P(B|A_1) \cdot P(A_1) + P(B|A_2) \cdot P(A_2) + P(B|A_3) \cdot P(A_3) $
將數值代入計算可得:
$ P(B) = 0.01 \cdot 0.3 + 0.02 \cdot 0.5 + 0.03 \cdot 0.2 = 0.003 + 0.01 + 0.006 = 0.019 $
因此,隨機抽取一件產品是次品的概率為1.9%。全概率公式不僅適用于離散型隨機變量,也可以推廣到連續型隨機變量的情況。在這種情況下,劃分事件通常由一個連續區間表示,而求和運算則被積分運算所取代。例如,在某些涉及概率密度函數的問題中,可以通過對條件概率密度函數進行積分來計算目標事件的概率。此外,全概率公式還經常與貝葉斯定理結合使用,用于解決后驗概率的計算問題。
總之,全概率公式是一種非常實用的概率計算方法,它幫助我們將復雜事件的概率問題分解為若干個更簡單的部分,并通過加權求和的方式得出最終答案。無論是理論研究還是實際應用,全概率公式都具有重要意義,尤其是在需要分析多階段或多層次隨機過程的情況下,這一工具顯得尤為重要。
- 案例計算
我們需要根據題目中的條件逐步推導出后驗概率 $ P(A|B) $,即在測試結果呈陽性的條件下,這個人真正患病的概率。以下是詳細的計算步驟:
定義事件和已知條件
- $ A $:某人確實患有該疾病。
- $ B $:測試結果呈陽性。
- 已知:
- 患病的先驗概率 $ P(A) = 0.01 $(1%)。
- 測試的靈敏度(真陽性率)$ P(B|A) = 0.95 $(如果一個人患病,則測試呈陽性的概率為95%)。
- 測試的特異性(真陰性率)$ P(\neg B|\neg A) = 0.95 $(如果一個人未患病,則測試呈陰性的概率為95%),因此 $ P(B|\neg A) = 1 - 0.95 = 0.05 $(如果一個人未患病,則測試呈陽性的概率為5%)。
使用貝葉斯定理公式
根據貝葉斯定理:
$
P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}
$
其中:
- $ P(B|A) = 0.95 $
- $ P(A) = 0.01 $
- $ P(B) $ 是測試結果呈陽性的總概率,可以通過全概率公式計算:
$
P(B) = P(B|A) \cdot P(A) + P(B|\neg A) \cdot P(\neg A)
$計算 $ P(B) $
- $ P(\neg A) = 1 - P(A) = 1 - 0.01 = 0.99 $(未患病的概率)。
- 將已知值代入公式:
$
P(B) = (0.95 \cdot 0.01) + (0.05 \cdot 0.99)
$
$
P(B) = 0.0095 + 0.0495 = 0.059
$因此,測試結果呈陽性的總概率 $ P(B) = 0.059 $。
計算后驗概率 $ P(A|B) $
將所有已知值代入貝葉斯公式:
$
P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}
$
$
P(A|B) = \frac{0.95 \cdot 0.01}{0.059}
$
$
P(A|B) = \frac{0.0095}{0.059} \approx 0.161
$結果解釋
通過計算得出,在測試結果呈陽性的條件下,這個人真正患病的概率 $ P(A|B) \approx 16.1% $。這表明,盡管測試的準確率較高(95%),但由于疾病的患病率較低(1%),即使測試結果呈陽性,實際患病的概率仍然相對較低。
總結
這個例子展示了先驗概率和后驗概率之間的聯系與區別。先驗概率 $ P(A) = 0.01 $ 反映了我們對疾病患病率的初始估計,而后驗概率 $ P(A|B) \approx 0.161 $ 則是在結合測試結果這一新數據后,對患病可能性的更新估計。通過貝葉斯定理,我們可以更科學地評估不確定性問題中的概率關系。
總結
Turbo碼的強大之處在于其解碼器的設計,特別是減法和反饋機制。通過迭代解碼,Turbo碼能夠在多次迭代中逐步逼近最優解,從而實現接近香農極限的性能。交織器和解交織器的使用進一步提高了解碼器的性能,使得Turbo碼成為現代通信系統中不可或缺的一部分。
2.2.4 Turbo碼的應用場景
Turbo碼作為一種高效的糾錯編碼技術,已經在多種通信系統中得到了廣泛的應用。以下是對Turbo碼在不同通信系統中的應用場景及其具體使用案例的詳細解釋。
無線通信
在無線通信系統中,由于信號傳輸過程中會受到多種干擾和衰減,因此需要采用糾錯編碼技術來提高通信的可靠性。Turbo碼憑借其接近香農限的性能和靈活的編碼結構,在無線通信中得到了廣泛應用。
使用案例:在第三代移動通信系統(3G)和第四代移動通信系統(4G)中,Turbo碼被用作數據傳輸的糾錯編碼方案。例如,在WCDMA(寬帶碼分多址)和LTE(長期演進)等標準中,Turbo碼被廣泛用于語音、數據和多媒體業務的傳輸。通過采用Turbo碼,這些系統能夠在較低的信噪比下實現可靠的通信,從而提高用戶體驗和數據傳輸效率。
衛星通信
衛星通信是一種重要的遠程通信方式,但由于信號在傳播過程中需要經過大氣層和空間衰減,因此通信質量容易受到影響。Turbo碼的高編碼增益和接近香農限的性能使其成為衛星通信中的理想選擇。
使用案例:在衛星數字視頻廣播(DVB-S2)標準中,Turbo碼被用作主要的糾錯編碼方案。DVB-S2標準是為了滿足高清電視和多媒體業務的高數據傳輸需求而制定的。通過使用Turbo碼,DVB-S2能夠在有限的帶寬和信噪比條件下提供高質量的視頻和數據傳輸服務,使得衛星通信在廣播、數據傳輸和互聯網接入等領域得到了廣泛應用。
深空通信
深空通信是指地球與太空中其他天體(如月球、火星等)之間的通信。由于深空通信距離遠、信號衰減大,因此需要采用高效的糾錯編碼技術來保證通信的可靠性。Turbo碼以其出色的性能和靈活性,在深空通信中發揮著重要作用。
使用案例:在國際空間站(ISS)與地球之間的通信中,Turbo碼被廣泛用于數據傳輸和語音通信。通過采用Turbo碼,這些通信能夠在極端惡劣的信道條件下實現可靠的傳輸,從而確保航天員與地面控制中心之間的順暢溝通以及科學實驗數據的準確傳輸。
除了上述場景外,Turbo碼還在許多其他通信系統中得到了應用,如光纖通信、移動通信網絡中的中繼傳輸等。隨著通信技術的不斷發展,Turbo碼在未來仍然具有廣闊的應用前景和重要的研究價值。
2.2.5 Turbo碼的優缺點分析
Turbo碼是一種高效的糾錯編碼技術,它在無線通信領域有著廣泛的應用。以下是對Turbo碼的優缺點進行的詳細分析:
- 優點:
- 高編碼增益:Turbo碼通過采用迭代解碼和軟輸入軟輸出(SISO)技術,能夠在較低的信噪比(SNR)下實現可靠的通信,提供顯著的編碼增益。這意味著在相同的傳輸條件下,Turbo碼可以比其他編碼方案傳輸更多的信息或者提供更高的通信質量。
- 接近香農限的性能:Turbo碼的糾錯性能非常接近理論上的香農限。香農限是信息論中描述在給定噪聲和帶寬條件下,可靠通信所能達到的最大信息速率的理論極限。Turbo碼的性能逼近這個極限,使得它在許多高要求的應用中成為首選的編碼方案。
- 靈活的編碼結構:Turbo碼由多個分量編碼器(通常是卷積編碼器)和隨機交織器組成,這種結構提供了靈活性和可配置性。編碼器的參數(如碼率、塊大小等)可以根據特定的應用需求進行調整。
- 適用于多種場景:Turbo碼最初是為無線通信設計的,但由于其出色的性能,它也被應用于其他領域,如深空通信、數據存儲和光纖通信等。在這些場景中,Turbo碼能夠提供必要的糾錯能力以確保數據的可靠傳輸。
- 與調制技術兼容:Turbo碼可以與多種調制技術(如QPSK、QAM等)結合使用,實現高效的數字通信。這種兼容性使得Turbo碼在各種通信系統中都有廣泛的應用前景。
- 缺點:
- 高解碼復雜度:Turbo碼的迭代解碼過程涉及大量的計算,尤其是在處理長碼塊時。這增加了接收機的復雜性和功耗,可能不適用于資源受限的設備或需要低延遲的應用。
- 解碼延遲:由于Turbo碼需要迭代解碼以達到最佳性能,這通常會導致一定的解碼延遲。對于實時性要求較高的應用(如語音通信或實時視頻流),這種延遲可能是不可接受的。
- 對信道條件敏感:雖然Turbo碼在多種信道條件下都能表現出良好的性能,但在某些極端條件下(如深衰落或高干擾環境),其性能可能會受到嚴重影響。在這些情況下,可能需要采取額外的措施來提高通信的可靠性。
- 交織器設計挑戰:Turbo碼中的隨機交織器對于其性能至關重要。設計一個適用于特定應用場景且性能優良的交織器是一個具有挑戰性的問題。不當的交織器設計可能會導致性能下降或甚至無法正常工作。
- 專利和許可問題:Turbo碼作為一項重要的通信技術,可能受到專利和許可的限制。這可能會增加使用Turbo碼的成本和復雜性,尤其是在商業應用中。
綜上所述,Turbo碼以其卓越的糾錯性能和接近香農限的表現而著稱,在無線通信和其他領域都有廣泛的應用。然而,其高解碼復雜度、解碼延遲以及對特定信道條件的敏感性等問題也需要在實際應用中予以考慮和權衡。
2.2.6 Turbo碼與其他譯碼技術的比較
在數字通信系統中,譯碼技術的選擇對系統的整體性能有著至關重要的影響。Turbo碼、低密度奇偶校驗碼(LDPC)和卷積碼是三種常見的譯碼技術,它們各自在不同的應用場景中具有獨特的優勢和劣勢。本報告將對這三種譯碼技術在性能、復雜度、實現難度和應用場景等方面進行深入的比較分析。
- 性能比較
- Turbo碼:Turbo碼以其接近香農限的性能而著稱,它通過迭代解碼和軟輸入軟輸出(SISO)技術實現了高編碼增益。在信噪比(SNR)較低的情況下,Turbo碼仍能保持可靠的通信質量。
- LDPC碼:LDPC碼是一種具有稀疏校驗矩陣的線性分組碼,其性能也非常接近香農限。LDPC碼通過稀疏的校驗矩陣和高效的迭代解碼算法實現了優異的糾錯性能。與Turbo碼相比,LDPC碼在長碼長和低信噪比條件下具有更好的性能。
- 卷積碼:卷積碼是一種具有記憶性的糾錯碼,它通過卷積運算將輸入信息序列編碼為輸出序列。與Turbo碼和LDPC碼相比,卷積碼的性能較差,尤其是在高數據傳輸速率和低信噪比條件下。然而,卷積碼具有較低的解碼復雜度和延遲,因此在一些對實時性要求較高的應用中仍有使用。
- 復雜度和實現難度比較
- Turbo碼:Turbo碼的編碼過程相對簡單,但解碼過程涉及迭代解碼和大量的計算,因此具有較高的解碼復雜度。此外,Turbo碼的性能對交織器的設計非常敏感,設計一個性能優良的交織器是一個具有挑戰性的問題。
- LDPC碼:LDPC碼的編碼過程需要構建稀疏校驗矩陣,這可能需要一定的計算資源和存儲空間。然而,LDPC碼的解碼過程相對簡單且高效,尤其是當采用硬件實現時。因此,LDPC碼在實現難度和復雜度上相對較為平衡。
- 卷積碼:卷積碼的編碼和解碼過程都相對簡單且易于實現。卷積碼的性能雖然不如Turbo碼和LDPC碼,但其低復雜度和低延遲的特點使得它在一些特定應用中具有優勢。
- 應用場景比較
- Turbo碼:Turbo碼廣泛應用于無線通信系統,如3G、4G和某些5G場景中。由于其出色的糾錯性能和靈活性,Turbo碼也適用于衛星通信和深空通信等遠距離通信場景。
- LDPC碼:LDPC碼在無線通信、數據存儲和光纖通信等領域都有廣泛的應用。特別是在需要長碼長和高數據傳輸速率的場景中,如高清視頻傳輸和大規模數據存儲,LDPC碼表現出色。
- 卷積碼:卷積碼主要用于語音通信、實時視頻流等對實時性要求較高的應用。此外,在一些資源受限的設備或低復雜度要求的場景中,卷積碼也是一個合適的選擇。
參考資料:【5G NR】【一文讀懂】移動通訊中使用的信道編解碼技術-Turbo編碼原理——微信公眾平臺