viterbi演算法
⑴ 解碼的演算法
viterbi解碼演算法是一種卷積碼的解碼演算法。缺點就是隨著約束長度的增加演算法的復雜度增加很快。約束長度N為7時要比較的路徑就有64條,為8時路徑變為128條。(2<<(N-1))。所以viterbi解碼一般應用在約束長度小於10的場合中。
演算法規定t時刻收到的數據都要進行64次比較,就是64個狀態每條路有兩條分支(因為輸入孝橡乎0或1),同時,跳傳到不同巧悉的兩個狀態中去,將兩條相應的輸出和實際接收到的輸出比較,量度值大的拋棄(也就是比較結果相差大的),留下來的就叫做倖存路徑,將倖存路徑加上上一時刻倖存路徑的量度然後保存,這樣64條倖存路徑就增加了一步。在解碼結束的時候,從64條倖存路徑中選出一條量度最小的,反推出這條倖存路徑(如銷叫做回溯),得出相應的解碼輸出。
⑵ 誰能通俗的講解下viterbi演算法嗎
我們來分析Viterbi 演算法的復雜度: (n, k, N)卷積碼的狀態數為2k (N−1) ,對每一時刻要
做2k (N−1) 次「加-比-存」操作,每一操作包括2k 次加法和2k −1 次比較,同時要保留2k (N−1)
條倖存路徑。由此可見,Viterbi 演算法的復雜度與信道質量無關,其計算量和存儲量都隨約束
長度N 和信息元分組k 呈指數增長。因此,在約束長度和信息元分組較大時並不適用。
為了充分利用信道信息,提高卷積碼解碼的可靠性,可以採用軟判決Viterbi 解碼演算法。
此時解調器不進行判決而是直接輸出模擬量,或是將解調器輸出波形進行多電平量化,而不
是簡單的 0、1 兩電平量化,然後送往解碼器。即編碼信道的輸出是沒有經過判決的「軟信
息」。
⑶ 最通俗易懂的解說viterbi維特比演算法!
這篇回答你絕對看得懂!如下圖,假如你從S和E之間找一條最短的路徑,除了遍歷完所有路徑,還有什麼更好的方法?
答案:viterbi (維特比)演算法。
過程非常簡單:
為了找出S到E之間的最短路徑,我們先從S開始從左到右一列一列地來看。
首先起點是S,從S到A列的路徑有三種可能:S-A1、S-A2、S-A3,如下圖:
我們不能武斷的說S-A1、S-A2、S-A3中的哪一段必定是全局最短路徑中的一部分,目前為止任何一段都有可能是全局最短路徑的備選項。
我們繼續往右看,到了B列。B列的B1、B2、B3逐個分析。
先看B1:
如上圖,經過B1的所有路徑只有3條:
S-A1-B1
S-A2-B1
S-A3-B1
以上這三條路徑,我們肯定可以知道其中哪一條是最短的(把各路徑每段距離加起來比較一下就知道哪條最短了)。假設S-A3-B1是最短的,那麼我們就知道了經過B1的所有路徑當中S-A3-B1是最短的,其它兩條路徑路徑S-A1-B1和S-A2-B1都比S-A3-B1長,絕對不是目標答案,可以大膽地刪掉了。刪掉了不可能是答案的路徑,就是viterbi演算法(維特比演算法)的重點,因為後面我們再也不用考慮這些被刪掉的路徑了。現在經過B1的所有路徑只剩一條路敬纖徑了,如下圖亮擾仿:
接下來,我們繼續看B2:
如上圖,經過B2的路徑有3條:
S-A1-B2
S-A2-B2
S-A3-B2
這三條路徑中我們肯定也可以知道其中哪一條是最短的,假設S-A1-B2是最短的,那麼我們就知道了經過B2的所有路徑當中S-A1-B2是最短的,其它兩條路徑路徑S-A2-B2和S-A3-B1也可以刪掉了。經過B2所有路徑只剩一條,如下圖:
接下來我們繼續看B3:
如上圖,經過B3的路徑也有3條:
S-A1-B3
S-A2-B3
S-A3-B3
這三條路徑中我們也肯定可以知道其中哪一條是最短的,假設S-A2-B3是最短的,那麼我們就知道了經過B3的所有路徑當中S-A2-B3是最短的,其它兩條路徑路徑S-A1-B3和S-A3-B3也可以刪掉了。李者經過B3的所有路徑只剩一條,如下圖:
現在對於B列的所有節點我們都過了一遍,B列的每個節點我們都刪除了一些不可能是答案的路徑,看看我們剩下哪些備選的最短路徑,如下圖:
上圖是我們我們刪掉了其它不可能是最短路徑的情況,留下了三個有可能是最短的路徑:S-A3-B1、S-A1-B2、S-A2-B3。現在我們將這三條備選的路徑匯總到下圖:
S-A3-B1、S-A1-B2、S-A2-B3都有可能是全局的最短路徑的備選路徑,我們還沒有足夠的信息判斷哪一條一定是全局最短路徑的子路徑。
如果我們你認為沒毛病就繼續往下看C列,如果不理解,回頭再看一遍,前面的步驟決定你是否能看懂viterbi演算法(維特比演算法)。
接下來講到C列了,類似上面說的B列,我們從C1、C2、C3一個個節點分析。
經過C1節點的路徑有:
S-A3-B1-C1、
S-A1-B2-C1、
S-A2-B3-C1
和B列的做法一樣,從這三條路徑中找到最短的那條(假定是S-A3-B1-C1),其它兩條路徑同樣道理可以刪掉了。那麼經過C1的所有路徑只剩一條,如下圖:
同理,我們可以找到經過C2和C3節點的最短路徑,匯總一下:
到達C列時最終也只剩3條備選的最短路徑,我們仍然沒有足夠信息斷定哪條才是全局最短。
最後,我們繼續看E節點,才能得出最後的結論。
到E的路徑也只有3種可能性:
E點已經是終點了,我們稍微對比一下這三條路徑的總長度就能知道哪條是最短路徑了。
在效率方面相對於粗暴地遍歷所有路徑,viterbi 維特比演算法到達每一列的時候都會刪除不符合最短路徑要求的路徑,大大降低時間復雜度。
viterbi演算法果然很簡單吧!
抱歉,有時候將viterbi演算法錯寫成了veterbi演算法,而且為了給搜索引擎埋關鍵詞,在不少地方強行加了不少維特比演算法之類的關鍵詞。
不管如何,如果看得懂就去左下角點個贊吧!
⑷ 如何用r語言編寫viterbi演算法
Viterbi解碼演算法是由Viterbi於1967年提出的一種最大似然解碼辦法,解碼器根據接收序列R按最大似然准則力圖找出正確的原始碼序列。隨著大規模集成電路技術的發展,採用Viterbi演算法的卷積編碼技術已成為廣泛應用的糾錯方案。Viterbi解碼過程可用狀態表示。Sj,t和Sj N/2,t表示t時刻的兩個狀態。在t1時刻,這兩個狀態值根據路徑為0或者1,轉移到狀態S2j,t1和S2j1,t1。每一種可能的狀態轉移都根據接收到的有雜訊的序列R計算路徑度量,然後選擇出各個狀態的最小度量路徑(倖存路徑)。Viterbi演算法就是通過在狀態中尋找最小量路徑向前回溯L步,最後得到的即為解碼輸出。
在卷積碼(n,k,m)表示法中,參數k表示每次輸入信息碼位數,n表示編碼的輸出卷積碼位數,m稱為約束長度(一些書中採用k=m1為約束長度,也可稱(2,1,2)碼網格圖,r=k/n稱為信息率,即編碼效率。本文運用的是(2,1,3)碼,約速長度為2,狀態數為22=-4。
TMS320C6000系列DSPs(數字信號處理器)是TI公司推出的一種並行處理的數字信號處理器,是基於TI的VLIW技術的。本文採用的是TMS320C6211。該處理器的工作頻率經過倍頻可達到150MHz,每個時鍾周期最多可並行執行8條指令,從而可以實現1200MIPS定點運算能力。
⑸ 用matlab viterbi演算法怎麼求傳輸
[mlse_Eq.zip] - 含有已知信道下BPSK,QPSK,8PSK,16QAM的mlse均衡,MMSE(頻域)均衡SER,BER性能的對比。
[wanzhengchengxu.rar] - 信號在信道進行傳輸時,經常會出現串擾,採用基於最大似然序列估計(mlse)的電子色散均衡器的方法,克服光纖通信中的由各種色散引起的碼間干擾。 研究基於最大似然序列估計(MLSE)的均衡器,採用維特比演算法實現,用matlab模擬出採用MLSE後的性能指標(眼圖和誤碼率)的提升。
[TCMchengxu.rar] - matlab實現8PSK TCM網格編碼調制,包含維特比解碼和與未編碼的QPSK誤碼性能比較
[OFDM_code.rar] - 本代碼是關於OFDM通信系統的模擬源程序,其中信道編碼,QPSK調制,QPSK解調,FFT,IFFT,viterbi編譯碼,誤比特統計,濾波等模塊。