//實現(4,1,6)卷積碼的維特比解碼源程式,採用了最大似然演算法
//介紹了軟判決維特比解碼演算法過程的三個步驟:初始化,度量更新和回溯解碼
#include
#define data_length 4000000
#define traceback_length 48 //解碼回溯深度,一般為m的5-10倍,m為暫存器個數
#define tb_data_out 16 //回溯輸出解碼長度,即每次回溯輸出16bits解碼資訊
unsigned long trans_table[2*traceback_length]=;//乙個單元32位,每兩個儲存單元儲存乙個時刻的64狀態倖存資訊
unsigned long tran; //儲存每個時刻的分支選擇路徑資訊值,32位
int bef[64]=; //前64狀態
int aft[64]=; //後64狀態
void bfly_a(int dp, int dm, int *p1, int *p2, int *p3, int select); //用於計算路徑度量
void tran_exchange(); //用於調整tran中第2,3位的次序
void trace_back(int *pout); //回溯
int max_state(int *pbef); //用於找到具有最大值所對應的狀態點
int min(int *pbef); //求出64個狀態的最小值
void viterbi()
; //keep input data
int output[tb_data_out]=; //keep output data
int *pb,*pa1,*pa2; //pb指向前狀態,pa1,pa2指向後狀態
int *p4; //儲存路徑資訊
file *fp;
file *fq;
if((fp=fopen("quantizer_bpsk0db.bin","r"))==null)
if((fq=fopen("viterbi_data_out.bin","wb"))==null) //file that keep output data
bef[0]=1000; //從0狀態開始,任意賦乙個初值
for(n=0;n=3)
p4=trans_table+2*(traceback_length-tb_data_out);
for(j=0;j=2)
//trans_table資訊移位
for(i=0;i<2*(traceback_length-tb_data_out);i++)
}//清零輸出
for(j=0;ja) //c路徑標記為1,a路徑標記為0
tran=tran<<1;
if(d>b) //d路徑標記為1,b路徑標記為0
}void trace_back(int *pout)
; //回溯資料,其最高16位為回溯解碼輸出
p4=trans_table+2*traceback_length; //移到陣列最後
pt=tb_data+traceback_length; //移到陣列最後,從後往前填充輸出資料
state=max_state(bef); //找到此時刻包含最大值的狀態
for(i=0;i=0&&state<32)
else if(state>=32&&state<64)
}//end of i
//輸出最高位16bits解碼資訊
pt=tb_data;
for(i=0;iy)
tran=tran-2; //tran的第2,3位互換
else
tran=tran+2; //tran的第2,3位互換}}
int max_state(int *pbef) //包含最大值的狀態
}return max_state;
}int min(int *pbef)
return mini;
}void main()
維特比演算法
維特比演算法在機器學習中非常重要,在求解隱馬爾科夫和條件隨機場的 問題中均用到了維特比演算法。實際上,維特比演算法不僅是很多自然語言處理的解碼演算法,也是現代數字通訊中使用最頻繁的演算法。以乙個簡單的隱馬爾科夫模型為例,n 為觀測符號,y y1,y2,y n 為隱狀態序列,要求的 問題為 y 1,y...
維特比演算法
維特比演算法主要用來解決籬笆網路,老實講我第一次聽到這個名字是發懵的,網路我是知道的,說白了就是圖 迪傑特斯拉演算法 但是,籬笆網路是值下面這種一列一列的圖,只會前面連線到後面,而且不會跳層連線,可以說是一種非常特殊且友好的圖了 正常的圖能逼死強迫症 x max xx x x x xma x x 這...
維特比演算法 python 維特比演算法實現分詞
維特比演算法原理可以參考以下文章,講解的非常詳細,那麼接下來將講解維特比演算法如何應用到分詞演算法中,並如何用python 實現。如何通俗地講解 viterbi 演算法?www.zhihu.com 一 過程分析 句子 經常有意見分歧 詞典 經常 經 有 有意見 意見 分歧 見 意 見分歧 分 概率 ...