91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-13
  • 語言: C/C++
  • 標簽:

資源簡介

這是我在大學期間做的一個有關編碼譯碼過程在vc環境中的實現,該程序實現了2,1,2的維特比譯碼過程,希望能夠幫助大家理解~

資源截圖

代碼片段和文件信息

#include
#include?
#include


#define?DATA_MAX?100???
#define?NMAX?100




int?r[DATA_MAX];
int?DATA_INPUT;

void?viterbi(int?DATA_INPUT)
{
????
int?b1b2b3b4;
????int?nijk;
????int?input[2]={0};??
int?p1[NMAX]p2[NMAX]p3[NMAX]p4[NMAX]pf1[NMAX]pf2[NMAX]pf3[NMAX]pf4[NMAX];
int?d1d2d3d4tem1tem2tem3tem4st;
int ?a[4][4]={0};
int??c[4][4]={0};


?d1=0;d2=0;d3=0;d4=0;tem1=0;tem2=0;tem3=0;tem4=0;
?j=0;n=0;i=0;b1=0;b2=0;b3=0;b4=0;
?a[0][0]=100;a[0][1]=100;a[0][2]=101;
?c[0][0]=100;c[0][1]=111;
?a[1][0]=101;a[1][1]=110;a[1][2]=111;
?c[1][0]=110;c[1][1]=101;
?a[2][0]=110;a[2][1]=100;a[2][2]=101;
?c[2][0]=111;c[2][1]=100;
?a[3][0]=111;a[3][1]=110;a[3][2]=111;
?c[3][0]=101;c[3][1]=110; //用a[0][0]-a[3][0]數組記錄,狀態轉移的4種狀態,并且用他的后面坐標為1.2的值表示他的下2個狀態
//為了便于記錄,數組存儲的時候讓他成為一個整數儲存即都狀態前面都加了個1變為三位數。
//用c[i][j]數組記錄從i狀態跳轉到j狀態的編碼輸出


n=0;
???????????
//根據譯碼輸入長度,分成3種情況,只有2個譯碼輸入字,只有4個和大于4個的情況

if(j==0?&&?DATA_INPUT>=2) //第一個狀態默認從0狀態起始
{
input[0]=r[n]; //通過input依次讀入譯碼輸入,每一次讀取2位
input[1]=r[n+1];
n+=2;

if(input[1]!=(c[0][0]%100%10)) //對當前狀態到后狀態1
//取出編碼輸出的低位與輸入譯碼的低位進行比較,若相同則路徑量度d1加1

d1++;
if(input[0]!=(c[0][0]%100/10)) //取出編碼輸出的高位與輸入譯碼的高位進行比較,若相同則路徑量度d1加1
d1++;
?p1[j]=0;p2[j]=0;


if(input[1]!=(c[0][1]%100%10)) //對當前狀態到后狀態2
d2++;
if(input[0]!=(c[0][1]%100/10))
d2++;

?p3[j]=1;p4[j]=1;

?j++;

?if(DATA_INPUT==2) //若只有2位譯碼字,直接輸出結果
{
?printf(“(注意:100表示00狀態,101表示01狀態,110表示10狀態,111表示11狀態)“);
?printf(“\n“);
?printf(“最后的幸存路徑為:?100“);
?printf(“->d%“a[0][0]);
?printf(“\n“);
?printf(“譯碼輸出為:%d“p1[0]);
?printf(“\n“);
}

?


}

if(j==1 &&?DATA_INPUT>=4)
{
input[0]=r[n];
input[1]=r[n+1];
n+=2;

???d3=d2; //當為第二個狀態時,d3d4分別賦值為d2,即二狀態時,3,4節點只能有2節點轉變而來
//之后同理,進行編碼字與譯碼輸入的判斷后更新各個路徑量度值。
if(input[1]!=(c[1][0]%100%10))
d3++;

if(input[0]!=(c[1][0]%100/10))
d3++;

p3[j]=0;


d4=d2;
if(input[1]!=(c[1][1]%100%10))
d4++;
if(input[0]!=(c[1][1]%100)/10)
d4++;

p4[j]=1;



if(input[1]!=(c[0][0]%100%10))
d1++;
if(input[0]!=(c[0][0]%100)/10)
d1++;
p1[j]=0;



if(input[1]!=(c[0][1]%100%10))
d2++;
if(input[0]!=(c[0][1]%100)/10)
d2++;
p2[j]=1;


j++;


if(DATA_INPUT==4)??//若只有4個譯碼輸入,則完成路徑選擇后,輸出幸存路徑,并輸出到達0狀態譯碼p1。
{
printf(“(注意:100表示00狀態,101表示01狀態,110表示10狀態,111表示11狀態)“);
printf(“\n“);
printf(“最后的幸存路徑為:?100“);
for(k=0;k {

if(p1[i]==0)
{
i=2*i%4;
printf(“->%d“a[(2*i)%4][0]);
}
if(p1[i]==1)

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????8913??2010-01-09?11:29??viterb212.c

-----------?---------??----------?-----??----

?????????????????8913????????????????????1


評論

共有 條評論