⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 123.txt

📁 信息论编码 循环编码
💻 TXT
字号:
文件头:
//****************************************************************

//该程序实现循环码的两种编码方式,K级和N-K级编码器的仿真程序

//同时实现能纠正一位错误的循环码的译码;

//****************************************************************

//通信与信息系统专业    詹锐鑫   07212439	2008年1月24日

//****************************************************************



#include <iostream.h>



const int n=7,k=4,r=n-k;				//循环码的n,k值

										//可以改变这两个值,实现对不同的循环码进行仿真;



void encodeh(int m[],int h[],int c[]);

void encodeg(int m[],int g[],int c[]);

void decode_1err(int r[],int g[],int c[]); 

void main()

{

	int g[r+1]={1,0,1,1};			//循环码的生成多项式,高次方在左边位元上;

	int h[k+1]={1,0,1,1,1};			//循环码的校验多项式,高次方在左边位元上;



	int m[k]={1,0,0,1};				//循环码的编码器输入;

	int c[n]={0};					//编码器的输出;

	int i=0;

	

	cout<<"(n,k)="<<n<<' '<<k<<endl;

	cout<<"g:";

	for(i=0;i<=n-k;i++)

		cout<<g[i];

	cout<<endl;

	cout<<"h:";

	for(文件尾:
ndex=0;index<n-k;index++)

		cout<<w[index];

	cout<<endl;

*/

//***********************************

	

	bool e=1;

	for(index=0;index<=n-k-1;index++)

	{

		e=(w[index]==0)&&e;

	}

	if(e==1)

	{

		for(index=0;index<n;index++)

		{

			c[index]=r[index];

		}

		return;

	}

//***************************************

	e=1;

	int shift=0;

	for(index=0;index<=n-k-1;index++)

	{

		e=(w[index]==s[index])&e;

	}



	while(e==0)

	{

		w_temp=w[0];

		for(index=0;index<=n-k-2;index++)

		{

			w[index]=(w_temp*g[index+1]+w[index+1])%2;

		}

		w[n-k-1]=(w_temp*g[n-k]+e)%2;



		e=1;

		for(index=0;index<=n-k-1;index++)

		{

			e=(w[index]==s[index])&e;

		}

		shift++;

	}

	w_temp=w[0];

		for(index=0;index<=n-k-2;index++)

		{

			w[index]=(w_temp*g[index+1]+w[index+1])%2;

		}

		w[n-k-1]=(w_temp*g[n-k]+e)%2;



		e=1;

		for(index=0;index<=n-k-1;index++)

		{

			e=(w[index]==s[index])&e;

		}



	for(index=0;index<n;index++)

	{

		c[index]=(r[index]+(index==shift))%2;

	}



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -