闲着无聊写个卷积码的计算,感觉所有的事情都像一个魔方,找到规律了就能转好。
// 卷积码
//输入(n,k,K)
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char g[5][5]= {}; //生成多项式
int n,k,K;
int sum=0;//总算数加
int number=0;//输入的码元数
char ci[10]= {}; //输入
char d[10]= {};//寄存器
int re=10;//循环次数
while(re--)
{
memset(d,'0',sizeof(d));
cout<<"请输入(n,k,K)"<<endl;;
cout<<"请输入n:";
cin>>n;
k=1;
cout<<"请输入k:"<<k;
cout<<"请输入K:";
cin>>K;
cout<<"请输入生成多项式"<<endl;
for(int i=0; i<n; i++)
{
cout<<"g["<<i<<"]=";
cin>>g[i];
}
cout<<"请输入总码元数"<<endl;
cin>>number;
cin>>ci;
//计算卷积吗
for(int m=0; m<number; m++)//第m个输入
{
for(int i=0; i<n; i++)//第i个生成多项式
{
sum=(ci[m]-'0')*(g[i][0]-'0');
for(int l=0; l<K; l++)
{
sum+=(d[l]-'0')*(g[i][l+1]-'0');
}
cout<<sum%2;
}//计算卷积码输出
cout<<endl;
for(int j=K; j>0; j--)
{
d[j]=d[j-1];
}
d[0]=ci[m];//寄存器状态后移
}
}
return 0;
}