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

  • 大小: 18KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-22
  • 語言: C/C++
  • 標簽: 維特比??卷積碼??C++??

資源簡介

卷積碼的編碼和維特比譯碼程序,使用C/C++編寫,可在Ubuntu和Windows操作系統上運行,經過修改可在嵌入式系統中運行。適合新手學習卷積碼編碼和維特比譯碼算法,也可供工程師參考。

資源截圖

代碼片段和文件信息

#include“convolution.h“
#include
int?main(){
char?exit_char;
myinput();//參數輸入,編碼約束長度支持3?-?9,只支持碼率為1/2的卷積碼,編碼矢量內置選擇1,手動輸入選擇2
creatsta();//創建卷積碼的狀態圖
convolution();//卷積碼編碼
cin>>exit_char;
}

/*參數輸入*/
void?myinput(void){
int?ij;
cout<<“輸入編碼的約束長度N:(3 cin>>myn;
stalen=int(pow(2.0myn-1));
cout<<“選擇默認的編碼矢量則輸入1,輸入2則可輸入其他的編碼矢量“< cin>>i;
if(i==1){
switch(myn){//設置所選擇的約束長度,碼率為1/2的卷積碼的編碼矢量。
case?3: myg1[0]=1myg1[1]=1myg1[2]=1;
myg2[0]=1myg2[1]=0myg2[2]=1;
break;
case?4: myg1[0]=1myg1[1]=1myg1[2]=1myg1[3]=1;
myg2[0]=1myg2[1]=0myg2[2]=1myg2[3]=1;
break;
case?5: myg1[0]=1myg1[1]=0myg1[2]=1myg1[3]=1myg1[4]=1;
myg2[0]=1myg2[1]=1myg2[2]=0myg2[3]=1myg2[4]=1;
break;
case?6: myg1[0]=1myg1[1]=0myg1[2]=1myg1[3]=1myg1[4]=1myg1[5]=1;
myg2[0]=1myg2[1]=1myg2[2]=0myg2[3]=1myg2[4]=0myg2[5]=1;
break;
case?7: myg1[0]=1myg1[1]=0myg1[2]=0myg1[3]=1myg1[4]=1myg1[5]=1myg1[6]=1;
myg2[0]=1myg2[1]=1myg2[2]=0myg2[3]=1myg2[4]=1myg2[5]=0myg2[6]=1;
break;
case?8: myg1[0]=1myg1[1]=0myg1[2]=0myg1[3]=1myg1[4]=1myg1[5]=1myg1[6]=1myg1[7]=1;
myg2[0]=1myg2[1]=1myg2[2]=1myg2[3]=0myg2[4]=0myg2[5]=1myg2[6]=0myg2[7]=1;
break;
case?9: myg1[0]=1myg1[1]=1myg1[2]=0myg1[3]=1myg1[4]=0myg1[5]=1myg1[6]=1myg1[7]=1myg1[8]=1;
myg2[0]=1myg2[1]=0myg2[2]=0myg2[3]=0myg2[4]=1myg2[5]=1myg2[6]=1myg2[7]=0myg2[8]=1;
break;
}
}
else{//手動輸入編碼矢量
cout<<“輸入g1“< for(j=0;j cin>>myg1[j];
cout<<“輸入g2“< for(j=0;j cin>>myg2[j];
}
cout<<“連接矢量1為“< for(j=0;j cout< cout< cout<<“連接矢量2為“< for(j=0;j cout< cout< cout<<“stalen:??“< cout<}

/*計算卷積碼的狀態轉移圖*/
void?creatsta(void){
int?ijkmyi;
int?tembits[10];
for(i=0;i stan1[i][0]=0;?//當前狀態為i,輸入為1時,編碼器的兩個輸出
stan1[i][1]=0;
stan0[i][0]=0;//當前狀態為i,輸入為0時,編碼器的兩個輸出
stan0[i][1]=0;
stachn[i][0]=i/2;//當前狀態為i,輸入為0時下一狀態stachn[i][0]為i/2
myi=i;//myi為當前狀態+輸入的數0,0放在最左邊
for(j=0;j if(myi>=pow(2.0myn-1-j)){
tembits[j]=1;
myi=myi-pow(2.0myn-1-j);
}
else{
tembits[j]=0;
}
}
for(k=0;k stan0[i][0]+=myg1[k]*tembits[k];//將myi和編碼矢量相乘并累加
stan0[i][1]+=myg2[k]*tembits[k];
}
stan0[i][0]=stan0[i][0]%2;//計算編碼器的實際輸出,輸出為乘加所得結果的最后一位
stan0[i][1]=stan0[i][1]%2;

myi=i+int(pow(2.0myn-1));//myi為當前狀態+輸入的數1,1放在最左邊
stachn[i][1]=myi/2;//當前狀態為i,輸入為1時下一狀態stachn[i][1]為(i+int(pow(2.0myn-1)))/2
for(j=0;j if(myi>=pow(2.0myn-1-j)){
tembits[j]=1;
myi=myi-pow(2.0myn-1-j);
}
else{
tembits[j]=0;
}
}
for(k=0;k stan1[i][0]+=myg1[k]*tembits[k];//將myi和編碼矢量相乘并累加
stan1[i][1]+=

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-01-14?10:37??convolution\
?????文件?????????472??2018-01-14?00:00??convolution\convolution.h
?????文件????????5236??2018-01-14?10:35??convolution\convolution_encoding.cpp
?????文件???????12735??2018-01-14?00:02??convolution\convolution_encoding.out
?????文件??????????74??2018-01-14?00:09??convolution\decoded_data.txt
?????文件????????1182??2018-01-14?00:08??convolution\encoded_data.txt
?????文件??????????96??2018-01-14?10:37??convolution\raw_data.txt
?????文件?????????871??2018-01-14?10:45??convolution\readme.txt
?????文件???????17026??2018-01-14?00:07??convolution\viterbi.out
?????文件?????????840??2018-01-14?00:04??convolution\viterbiH.h
?????文件????????9392??2018-01-14?10:36??convolution\viterbi_decoding.cpp

評論

共有 條評論