亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hardviterbiqpskinawgn.c

?? Hard Viterbi QPSK in AWGN, Rayleight soft Viterbi QAM in AWGN, Rayleight viterbi QAM in AWGN, Rayl
?? C
字號:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include "random.h"
//make struct complex
typedef struct complex1
{
	double real;
	double imag;
} complex;
// define the number of interation 
#define ITERATION pow(10, 4)
#define THENUMBEROFDATA 1000

void convolution(int *data, int *codeddata);
double modulation(int data);
double demodulation(double r_data);
int bercheck(int data, double d_data);
double comparison(double com1, double com2);
void viterbi_decode(int *d_data, int *decode_data);
void quantization(double r_data, int *d_data);
double dis(int data, int data1, int data2, int data3, int data4, int data5, int value1, int value2);

void main()
{
	FILE *fp1;
	double Noisepower;
	complex Noise;
	int data[THENUMBEROFDATA];
	int codeddata[2*(THENUMBEROFDATA+2)];
	int l;
	//int s[4][THENUMBEROFDATA+3];
	//int ll;
	//int dd_data[4];
	complex m_data;
	complex r_data;
	complex H;
	complex er_data;
	int d_data[3];
	int d_data1[3];
	int dd_data[6*(THENUMBEROFDATA+2)];
	int decode_data[THENUMBEROFDATA+2];
	int error;
	//int error1;
	double avgerr;
	int EbofN0;
//	int viter;
	// open the file 
	fp1=fopen("result_qpsk_ViterbiSoft.txt","w");
	srand(time(0));

	
	for(EbofN0=11; EbofN0<=15; EbofN0+=1)
	{
		double sumerr=0;
		int run;		
	    int i;
		//int k;
		for(run=0;run<ITERATION;run++)
		{
			// create the data
			generate_random(&data[0], THENUMBEROFDATA);
			// create convolution code
			/*data[0] = 1;
			data[1] = 0;
			data[2] = 1;
			data[3] = 1;
             */
			convolution(data, codeddata);					

            for (i=0; i<=(THENUMBEROFDATA+1);i++)
			{
			    //printf("%d%d ",codeddata[2*i],codeddata[2*i+1]);
				//modulate the real and imagine of the data 
				m_data.real = modulation(codeddata[2*i]);
				m_data.imag = modulation(codeddata[2*i+1]);
			    // make the noisepower
		        Noisepower=1/(1*pow(10,(double)EbofN0/10));
			    // create the noise 
		        Noise.real = sqrt(Noisepower/2)*GaussRand();
			    Noise.imag = sqrt(Noisepower/2)*GaussRand();

				//H.real = sqrt(1.0/2.0)*GaussRand();
				//H.imag = sqrt(1.0/2.0)*GaussRand();
			    // receive the signal (modulated data + noise)

			    r_data.real = sqrt(1.0/2.0)*m_data.real + Noise.real;
			    r_data.imag = sqrt(1.0/2.0)*m_data.imag + Noise.imag;

			    //er_data.real = (r_data.real*H.real+r_data.imag*H.imag)/(pow(H.real,2)+pow(H.imag,2));
				//er_data.imag = (r_data.imag*H.real-r_data.real*H.imag)/(pow(H.real,2)+pow(H.imag,2));

			    // demodulate the signal

				quantization(r_data.real,d_data);
				quantization(r_data.imag,d_data1);

				dd_data[6*i]=d_data[0];
				dd_data[6*i+1]=d_data[1];
				dd_data[6*i+2]=d_data[2];
				dd_data[6*i+3]=d_data1[0];
				dd_data[6*i+4]=d_data1[1];
				dd_data[6*i+5]=d_data1[2];
			    //d_data[2*i] = (int)demodulation(r_data.real);
			    //d_data[2*i+1] = (int)demodulation(r_data.imag);
				//printf("%f\n",r_data.real);
                //printf("d_data = %d,%d\n",d_data[2*i],d_data[2*i+1]);
			}
		    //printf("\n");
            
            viterbi_decode(dd_data,decode_data);
			
			//printf("%d,",d_data[2*i],d_data[2*i+1]);
			//data[THENUMBEROFDATA]=0;
			//data[(THENUMBEROFDATA+1)]=0;
			for (l=0;l<=(THENUMBEROFDATA-1);l++)
			{				
				//printf("%d=",decode_data[l]);
				//printf("%d\n",data[l]);
				error= bercheck(data[l], decode_data[l]);
				sumerr = sumerr + error;
			}			
		}		
		// calculate the BER
		avgerr = (double)sumerr /ITERATION /THENUMBEROFDATA;
		fprintf(fp1,"%.7f\n",avgerr);
		printf("%.7f\n", avgerr);
	}
	fclose(fp1);
}

void quantization(double r_data, int *d_data)
{
	if (r_data<=-sqrt(1.0/2.0)*3/4)
	{
		d_data[0]=0;
		d_data[1]=0;
		d_data[2]=0;
	}else if (r_data<=-sqrt(1.0/2.0)*2/4)
	{
		d_data[0]=0;
		d_data[1]=0;
		d_data[2]=1;
	}else if (r_data<=-sqrt(1.0/2.0)*1/4)
	{
		d_data[0]=0;
		d_data[1]=1;
		d_data[2]=0;
	}else if (r_data <= 0 )
	{
		d_data[0]=0;
		d_data[1]=1;
		d_data[2]=1;
	}else if (r_data<=sqrt(1.0/2.0)*1/4)
	{
		d_data[0]=1;
		d_data[1]=0;
		d_data[2]=0;
	}else if (r_data<=sqrt(1.0/2.0)*2/4)
	{
		d_data[0]=1;
		d_data[1]=0;
		d_data[2]=1;
	}else if (r_data<=sqrt(1.0/2.0)*3/4)
	{
		d_data[0]=1;
		d_data[1]=1;
		d_data[2]=0;
	}else 
	{
		d_data[0]=1;
		d_data[1]=1;
		d_data[2]=1;
	}
}

void convolution(int *data, int *codeddata)
{
	int a = data[0];
	int b = 0;
	int c = 0;
	int N =0;
	//int codeddata[12];
	for(N=0;N<=(THENUMBEROFDATA+1);N++)
	{
		codeddata[2*N] = a^b^c;
		codeddata[2*N+1] = a^c;
		a = data[N+1];
		b = data[N];
		if(N == 0)
		{
			c = 0;
		}else
		{
			c = data[N-1];
		}
		if(N>=(THENUMBEROFDATA-1))
		{
			a=0;
		}
		if(N>=THENUMBEROFDATA)
		{
			b=0;
		}
	}
}
// modulation function
double modulation(int data)
{
	int m_data;
	if (data==1)
	{
		m_data=1;
	}
	else
	{
		m_data=-1;
	}
	return (m_data);
}
// demodulation function
double demodulation(double r_data)
{
	int d_data;
	if (r_data>=0)
	{
		d_data=1;
	}
	else
	{
		d_data=0;
	}
	return (d_data);
}
// error check function
int bercheck(int data, double d_data)
{
	int error=0;
	if ((double)data==d_data)
	{
		error=0;
	}
	else
	{
		error=1;
	}
	return (error);
}

void viterbi_decode(int *d_data, int *decode_data)
{
	double s[4][(THENUMBEROFDATA+3)];
	int k1;
	int k2;
	int c[(THENUMBEROFDATA+2)];
	int l1;
//	int l2;
	int i;
	int l;
	for (i = 0;i<=3;i++)
	{
		for(l=0;l<=THENUMBEROFDATA+2;l++)
		{
			s[i][l]=10000000000000;
		}
	}
    s[0][0]=0;
	s[0][1]=dis(d_data[0],d_data[1],d_data[2],d_data[3],d_data[4],d_data[5],0,0);
	s[1][1]=dis(d_data[0],d_data[1],d_data[2],d_data[3],d_data[4],d_data[5],1,1);
	s[0][2]=s[0][1]+dis(d_data[6],d_data[7],d_data[8],d_data[9],d_data[10],d_data[11],0,0);
	s[1][2]=s[0][1]+dis(d_data[6],d_data[7],d_data[8],d_data[9],d_data[10],d_data[11],1,1);
	s[2][2]=s[1][1]+dis(d_data[6],d_data[7],d_data[8],d_data[9],d_data[10],d_data[11],1,0);
	s[3][2]=s[1][1]+dis(d_data[6],d_data[7],d_data[8],d_data[9],d_data[10],d_data[11],0,1);
	
	for(k2=3;k2<=(THENUMBEROFDATA+2);k2++)
	{
		for(k1=0;k1<=3;k1++)
		{
			if(k1==0)
			{
				s[k1][k2]=comparison(s[k1][k2-1]+dis(d_data[6*(k2-1)],d_data[6*(k2-1)+1],d_data[6*(k2-1)+2],d_data[6*(k2-1)+3],d_data[6*(k2-1)+4],d_data[6*(k2-1)+5],0,0), s[k1+2][k2-1]+dis(d_data[6*(k2-1)],d_data[6*(k2-1)+1],d_data[6*(k2-1)+2],d_data[6*(k2-1)+3],d_data[6*(k2-1)+4],d_data[6*(k2-1)+5],7,7));
			}
			else if(k1==1)
			{
				s[k1][k2]=comparison(s[k1-1][k2-1]+dis(d_data[6*(k2-1)],d_data[6*(k2-1)+1],d_data[6*(k2-1)+2],d_data[6*(k2-1)+3],d_data[6*(k2-1)+4],d_data[6*(k2-1)+5],7,7), s[k1+1][k2-1]+dis(d_data[6*(k2-1)],d_data[6*(k2-1)+1],d_data[6*(k2-1)+2],d_data[6*(k2-1)+3],d_data[6*(k2-1)+4],d_data[6*(k2-1)+5],0,0));
			}
			else if(k1==2)
			{
				s[k1][k2]=comparison(s[k1-1][k2-1]+dis(d_data[6*(k2-1)],d_data[6*(k2-1)+1],d_data[6*(k2-1)+2],d_data[6*(k2-1)+3],d_data[6*(k2-1)+4],d_data[6*(k2-1)+5],7,0), s[k1+1][k2-1]+dis(d_data[6*(k2-1)],d_data[6*(k2-1)+1],d_data[6*(k2-1)+2],d_data[6*(k2-1)+3],d_data[6*(k2-1)+4],d_data[6*(k2-1)+5],0,7));
			}
			else if(k1==3)
			{
				s[k1][k2]=comparison(s[k1-2][k2-1]+dis(d_data[6*(k2-1)],d_data[6*(k2-1)+1],d_data[6*(k2-1)+2],d_data[6*(k2-1)+3],d_data[6*(k2-1)+4],d_data[6*(k2-1)+5],0,7), s[k1][k2-1]+dis(d_data[6*(k2-1)],d_data[6*(k2-1)+1],d_data[6*(k2-1)+2],d_data[6*(k2-1)+3],d_data[6*(k2-1)+4],d_data[6*(k2-1)+5],7,0));
			}
		}
	}
    
	if((s[0][(THENUMBEROFDATA+1)]+dis(d_data[6*(THENUMBEROFDATA+1)],d_data[6*(THENUMBEROFDATA+1)+1],d_data[6*(THENUMBEROFDATA+1)+2],d_data[6*(THENUMBEROFDATA+1)+3],d_data[6*(THENUMBEROFDATA+1)+4],d_data[6*(THENUMBEROFDATA+1)+5],0,0))==comparison(s[0][(THENUMBEROFDATA+1)]+dis(d_data[6*(THENUMBEROFDATA+1)],d_data[6*(THENUMBEROFDATA+1)+1],d_data[6*(THENUMBEROFDATA+1)+2],d_data[6*(THENUMBEROFDATA+1)+3],d_data[6*(THENUMBEROFDATA+1)+4],d_data[6*(THENUMBEROFDATA+1)+5],0,0) , s[2][(THENUMBEROFDATA+1)]+dis(d_data[6*(THENUMBEROFDATA+1)],d_data[6*(THENUMBEROFDATA+1)+1],d_data[6*(THENUMBEROFDATA+1)+2],d_data[6*(THENUMBEROFDATA+1)+3],d_data[6*(THENUMBEROFDATA+1)+4],d_data[6*(THENUMBEROFDATA+1)+5],7,7)))
	{
		c[(THENUMBEROFDATA+1)] = 0;
		decode_data[(THENUMBEROFDATA-1)]=0;
	}
	else 
	{
		c[(THENUMBEROFDATA+1)] = 2;
		decode_data[(THENUMBEROFDATA-1)]=0;
	}
	for (l1=(THENUMBEROFDATA+1);l1>=1;l1--)
	{
		if (c[l1]==0)
		{
			if((s[0][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],0,0))==comparison(s[0][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],0,0),s[2][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],7,7)))
			{
				c[l1-1] = 0;
				decode_data[l1-1]=0;
			}
			else 
			{
				c[l1-1] = 2;
				decode_data[l1-1]=0;
			}
		}else if(c[l1]==1)
		{
			if((s[0][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],7,7))==comparison(s[0][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],7,7),s[2][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],0,0)))
			{
				c[l1-1] = 0;
				decode_data[l1-1]=1;
			}
			else 
			{
				c[l1-1] = 2;
				decode_data[l1-1]=1;
			}
		}else if(c[l1]==2)
		{
			if((s[1][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],7,0))==comparison(s[1][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],7,0),s[3][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],0,7)))
			{
				c[l1-1] = 1;
				decode_data[l1-1]=0;
			}
			else 
			{
				c[l1-1] = 3;
				decode_data[l1-1]=0;
			}
		}else if(c[l1]==3)
		{
			if((s[1][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],0,7))==comparison(s[1][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],0,7),s[3][l1-1]+dis(d_data[6*(l1-1)],d_data[6*(l1-1)+1],d_data[6*(l1-1)+2],d_data[6*(l1-1)+3],d_data[6*(l1-1)+4],d_data[6*(l1-1)+5],7,0)))
			{
				c[l1-1] = 1;
				decode_data[l1-1]=1;
			}
			else 
			{
				c[l1-1] = 3;
				decode_data[l1-1]=1;
			}
		}
	}
	/*
		for(l=0;l<=THENUMBEROFDATA+1;l++)
		{
			printf("%d ",c[l]);
		}
	printf("\n");
	
	for(i=0;i<=3;i++)
	{
		for(l=0;l<=THENUMBEROFDATA+2;l++)
		{
			printf("%d",s[i][l]);	
		}
		printf("\n");
	}*/	
}

double comparison(double com1, double com2)
{
	double com3;
	if(com1>=com2)
	{
		com3=com2;
	}else
	{
		com3=com1;
	}
	return (com3);
}

double dis(int data, int data1, int data2, int data3, int data4, int data5, int value1, int value2)
{
	double distance;
	distance = sqrt(pow(((data*4+data1*2+data2)-value1),2) + pow(((data3*4+data4*2+data5)-value2),2));
	return (distance);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人白浆超碰人人人人| 青青草国产成人av片免费| 国产中文字幕精品| 精品伦理精品一区| 韩国女主播一区二区三区| 精品久久久久一区二区国产| 久久精品国产99久久6| 精品国产不卡一区二区三区| 国模套图日韩精品一区二区| 精品久久久久av影院| 国产综合成人久久大片91| 国产精品日韩成人| 日本高清成人免费播放| 一个色在线综合| 精品视频一区二区三区免费| 久久国产欧美日韩精品| 欧美国产日产图区| 欧美亚洲日本一区| 蜜桃av噜噜一区二区三区小说| 精品99一区二区| 粉嫩绯色av一区二区在线观看| 亚洲欧美日韩人成在线播放| 51久久夜色精品国产麻豆| 精品亚洲欧美一区| 国产精品美女久久久久久久网站| 在线观看视频一区二区欧美日韩| 日韩黄色免费网站| 国产欧美一区在线| 欧美日韩久久一区二区| 九九国产精品视频| 亚洲精品久久7777| 欧美成人a视频| 色哟哟在线观看一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 国内一区二区视频| 中文字幕亚洲一区二区va在线| 欧美久久婷婷综合色| 国产成a人亚洲精| 午夜影院在线观看欧美| 国产清纯白嫩初高生在线观看91| 在线观看日韩av先锋影音电影院| 国产中文一区二区三区| 午夜精品久久久久久久久久久| 国产无一区二区| 这里只有精品99re| 色综合天天综合色综合av| 国产一区二区三区免费播放| 性欧美疯狂xxxxbbbb| 国产精品第一页第二页第三页 | 91精品国产综合久久久蜜臀图片| 国产成人激情av| 日本不卡高清视频| 洋洋成人永久网站入口| 国产精品视频在线看| 日韩女优视频免费观看| 在线看国产一区二区| 成年人午夜久久久| 国产精品伊人色| 久久99精品国产麻豆婷婷洗澡| 亚洲国产精品久久人人爱蜜臀 | 久久精品国产亚洲高清剧情介绍 | 91精品国产欧美日韩| 在线观看日韩电影| 91啪亚洲精品| www.欧美亚洲| 成人免费视频免费观看| 国产寡妇亲子伦一区二区| 免费人成黄页网站在线一区二区| 亚洲午夜成aⅴ人片| 亚洲欧美国产高清| 亚洲另类在线制服丝袜| 亚洲视频一二区| 亚洲免费在线视频一区 二区| 国产精品欧美一区喷水| 国产亚洲欧洲997久久综合 | 久久成人免费电影| 美女高潮久久久| 麻豆精品在线视频| 久久精品国产久精国产| 久久99久久99小草精品免视看| 青青草精品视频| 久久国产人妖系列| 国产一区二区精品久久99| 麻豆久久久久久| 国产一区二区三区四区五区美女| 久久99精品国产麻豆不卡| 美国毛片一区二区| 国模大尺度一区二区三区| 国产一区二区三区国产| 国产精品一区二区x88av| 国产精品66部| 成人国产精品视频| 91视频国产资源| 欧美性一区二区| 在线免费不卡视频| 91成人免费电影| 91.麻豆视频| 国产乱码一区二区三区| 成人性生交大片免费看视频在线 | 欧美大尺度电影在线| 国产亚洲综合性久久久影院| 国产三级精品三级| 亚洲欧美日韩国产手机在线 | 日韩av网站在线观看| 久久成人精品无人区| 丁香婷婷综合网| 在线观看视频91| 久久婷婷国产综合精品青草| 国产精品色哟哟| 婷婷综合另类小说色区| 国产成人自拍高清视频在线免费播放 | 国产精品三级视频| 一区二区三区欧美视频| 久久99热狠狠色一区二区| 成人免费电影视频| 91精品婷婷国产综合久久| 久久久国产精品午夜一区ai换脸| 亚洲六月丁香色婷婷综合久久 | 成人激情开心网| 欧美日韩国产大片| 国产精品拍天天在线| 香蕉成人伊视频在线观看| 国产一区二区福利视频| 在线观看一区二区视频| 久久久久亚洲蜜桃| 肉肉av福利一精品导航| 高清不卡一区二区| 欧美日韩国产片| 欧美激情资源网| 美脚の诱脚舐め脚责91| 色综合色狠狠综合色| 精品国精品国产| 亚洲一区二区在线观看视频| 国产福利不卡视频| 欧美精品自拍偷拍| 亚洲天堂2014| 激情久久五月天| 欧美日韩精品欧美日韩精品| 中文字幕av一区 二区| 老司机精品视频一区二区三区| 99热这里都是精品| 精品久久久久久久一区二区蜜臀| 亚洲与欧洲av电影| 99久久精品国产麻豆演员表| 精品精品国产高清一毛片一天堂| 亚洲免费看黄网站| 国产成人免费视频网站| 日韩免费福利电影在线观看| 午夜精品久久久久久久99水蜜桃| 成人成人成人在线视频| 久久久久国产精品麻豆ai换脸 | 亚洲在线视频免费观看| 99精品视频在线观看免费| 亚洲精品一区二区三区香蕉| 性久久久久久久| 欧美体内she精高潮| 亚洲男人的天堂一区二区| 懂色av中文字幕一区二区三区 | 成人精品在线视频观看| 久久男人中文字幕资源站| 麻豆国产欧美日韩综合精品二区| 69av一区二区三区| 五月婷婷综合激情| 欧美综合一区二区| 一区二区三区欧美视频| 欧美午夜精品一区二区蜜桃| 亚洲男同性视频| 色婷婷综合中文久久一本| 亚洲免费在线看| 欧美在线小视频| 午夜影院久久久| 91精品国产综合久久久久| 日本中文在线一区| 欧美一区永久视频免费观看| 日韩1区2区日韩1区2区| 精品噜噜噜噜久久久久久久久试看 | 亚洲图片欧美激情| 色网站国产精品| 亚洲国产一二三| 日韩亚洲欧美综合| 精品一区二区三区欧美| 欧美成人a在线| 国产成人免费av在线| 国产精品久久久久永久免费观看| 高清视频一区二区| 亚洲视频 欧洲视频| 91国产成人在线| 天堂成人国产精品一区| 日韩欧美精品三级| 国产风韵犹存在线视精品| 中文字幕欧美国产| 色婷婷激情久久| 三级在线观看一区二区| www激情久久| 色天使久久综合网天天| 日韩电影在线观看网站| 久久蜜桃av一区二区天堂| 99久久综合色| 日韩精品1区2区3区| 国产人妖乱国产精品人妖|