MATLAB之卷积码
poly2trellis
poly2trellis由卷積碼的生成多項式產生trellis圖,它的輸出主要取決于函數convenc和vitdec的輸入。
前向反饋卷積碼:trellis = poly2trellis(7,[171,133]);
convenc是卷積碼的編碼函數:
1.code = convenc(msg,trellis);
2.code = convenc(msg,trellis,puncpat);
注釋:
puncpat參數的意思:用于指定打孔方式已獲得更高的碼率。
puncpat是由1或者0組成的向量,其中0的位置為打孔比特,puncpat的長度至少有log2(trellis.numOutputSymbols)個比特。 有個三個輸出的trellis,每個輸出有兩個取值(0或者1)所以trellis.numOutputSymbols=2^3=8
函數vitdec
函數vitdec 采用Viterbi算法對卷積碼進行譯碼。
decode = vitdec(code,trellis,tblen,opmode,dectype);
tblen是一個正整數參數,指定回溯深度,如果碼率為1/2,tblen的一個典型值是約束長度的5倍。
字符串opmode指定譯碼器的操作模式和相應的編碼器的假設,他有三個選擇:
1.‘cont’:認為編碼器從零狀態開始編碼,編碼器從最佳路徑回溯,有tblen的延遲。
2.‘term’:認為編碼器從零狀態開始,并且結束于零狀態。
3.‘trunc’:認為編碼器從零狀態開始編碼。該模式沒有延遲。
字符串dectype指定譯碼器的判決類型,并影響譯碼器code的數據類型。
1.‘unquant’:code包含實輸入,其中1表示邏輯0,-1標示邏輯1.
2.'hard':code為二進制輸入。
3.‘soft’:有限比特量化軟判決譯碼,軟判決譯碼需要參數nsdec.
decode =?vitdec(code,trellis,tblen,opmode,'soft',nsdec);對向量code進行軟判決譯碼。code為從0到2^nsdec-1的整數,其中0表示0,2^nsdec-1表示1.
decode = vitdec(code,trellis,tblen,opmode,dectype,puncpat);表示code是打孔的,參數puncpat是打孔類型向量,其中0表示輸入編碼結果中打孔的比特。
總結
以上是生活随笔為你收集整理的MATLAB之卷积码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 404和302
- 下一篇: go连接mysql数据库