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

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

?? viterbiqpskinrayleigh.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, 3)
#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);
int comparison(int com1, int com2);
void viterbi_decode(int *d_data, int *decode_data);


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 er_data;
	complex H;
	int d_data[2*(THENUMBEROFDATA+2)];
	int decode_data[THENUMBEROFDATA+2];
	int error;
	//int error1;
	double avgerr;
	int EbofN0;
//	int viter;
	// open the file 
	fp1=fopen("result_qpsk_ViterbiRayleigh.txt","w");
	srand(time(0));

	
	for(EbofN0=11; EbofN0<=15; EbofN0+=1)
	{
		double sumerr=0;
		int run;		
	    int i;
		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)*(H.real*m_data.real-H.imag*m_data.imag) + Noise.real;
			    r_data.imag = sqrt(1.0/2.0)*(H.real*m_data.imag+H.imag*m_data.real) + 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
			    d_data[2*i] = (int)demodulation(er_data.real);
			    d_data[2*i+1] = (int)demodulation(er_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(d_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 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)
{
	int 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]=9;
		}
	}
    s[0][0]=0;
	s[0][1]=(d_data[0]^0)+(d_data[1]^0);
	s[1][1]=(d_data[0]^1)+(d_data[1]^1);
	s[0][2]=s[0][1]+(d_data[2]^0)+(d_data[3]^0);
	s[1][2]=s[0][1]+(d_data[2]^1)+(d_data[3]^1);
	s[2][2]=s[1][1]+(d_data[2]^1)+(d_data[3]^0);
	s[3][2]=s[1][1]+(d_data[2]^0)+(d_data[3]^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]+(d_data[2*(k2-1)]^0)+(d_data[2*(k2-1)+1]^0), s[k1+2][k2-1]+(d_data[2*(k2-1)]^1)+(d_data[2*(k2-1)+1]^1));
			}
			else if(k1==1)
			{
				s[k1][k2]=comparison(s[k1-1][k2-1]+(d_data[2*(k2-1)]^1)+(d_data[2*(k2-1)+1]^1), s[k1+1][k2-1]+(d_data[2*(k2-1)]^0)+(d_data[2*(k2-1)+1]^0));
			}
			else if(k1==2)
			{
				s[k1][k2]=comparison(s[k1-1][k2-1]+(d_data[2*(k2-1)]^1)+(d_data[2*(k2-1)+1]^0), s[k1+1][k2-1]+(d_data[2*(k2-1)]^0)+(d_data[2*(k2-1)+1]^1));
			}
			else if(k1==3)
			{
				s[k1][k2]=comparison(s[k1-2][k2-1]+(d_data[2*(k2-1)]^0)+(d_data[2*(k2-1)+1]^1), s[k1][k2-1]+(d_data[2*(k2-1)]^1)+(d_data[2*(k2-1)+1]^0));
			}
		}
	}
    
	if((s[0][(THENUMBEROFDATA+1)]+(d_data[2*(THENUMBEROFDATA+1)]^0)+(d_data[2*(THENUMBEROFDATA+1)+1]^0))==comparison(s[0][(THENUMBEROFDATA+1)]+(d_data[2*(THENUMBEROFDATA+1)]^0)+(d_data[2*(THENUMBEROFDATA+1)+1]^0) , s[2][(THENUMBEROFDATA+1)]+(d_data[2*(THENUMBEROFDATA+1)]^1)+(d_data[2*(THENUMBEROFDATA+1)+1]^1)))
	{
		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]+(d_data[2*(l1-1)]^0)+(d_data[2*(l1-1)+1]^0))==comparison(s[0][l1-1]+(d_data[2*(l1-1)]^0)+(d_data[2*(l1-1)+1]^0),s[2][l1-1]+(d_data[2*(l1-1)]^1)+(d_data[2*(l1-1)+1]^1)))
			{
				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]+(d_data[2*(l1-1)]^1)+(d_data[2*(l1-1)+1]^1))==comparison(s[0][l1-1]+(d_data[2*(l1-1)]^1)+(d_data[2*(l1-1)+1]^1),s[2][l1-1]+(d_data[2*(l1-1)]^0)+(d_data[2*(l1-1)+1]^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]+(d_data[2*(l1-1)]^1)+(d_data[2*(l1-1)+1]^0))==comparison(s[1][l1-1]+(d_data[2*(l1-1)]^1)+(d_data[2*(l1-1)+1]^0),s[3][l1-1]+(d_data[2*(l1-1)]^0)+(d_data[2*(l1-1)+1]^0)))
			{
				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]+(d_data[2*(l1-1)]^0)+(d_data[2*(l1-1)+1]^1))==comparison(s[1][l1-1]+(d_data[2*(l1-1)]^0)+(d_data[2*(l1-1)+1]^1),s[3][l1-1]+(d_data[2*(l1-1)]^1)+(d_data[2*(l1-1)+1]^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");
	}*/
	
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频一区二区| 欧美肥大bbwbbw高潮| 国产精品18久久久久久久久| 日韩经典中文字幕一区| 亚洲一区二区三区不卡国产欧美| 亚洲欧美国产三级| 亚洲国产精品尤物yw在线观看| 亚洲欧美日韩国产中文在线| 一卡二卡三卡日韩欧美| 亚洲国产综合色| 美国av一区二区| 国产精品主播直播| av亚洲精华国产精华精| 91色porny| 欧美一区二区三区的| 欧美成人猛片aaaaaaa| 国产校园另类小说区| 国产精品国产精品国产专区不片| 亚洲精品亚洲人成人网| 偷拍与自拍一区| 精品一区二区影视| 91污在线观看| 7777精品伊人久久久大香线蕉 | 99国产精品久| 色婷婷久久久久swag精品| 欧美性色欧美a在线播放| 欧美高清hd18日本| 久久久久高清精品| 洋洋成人永久网站入口| 日本午夜一本久久久综合| 激情五月激情综合网| eeuss鲁片一区二区三区| 欧美系列一区二区| 精品女同一区二区| 亚洲另类春色国产| 国产麻豆午夜三级精品| 日本丶国产丶欧美色综合| 日韩欧美色电影| 亚洲精品少妇30p| 经典三级在线一区| 欧洲精品在线观看| 久久久久久久精| 日日夜夜精品视频天天综合网| 国产一区二区三区免费在线观看| 日本韩国欧美在线| 久久理论电影网| 亚洲午夜精品网| 成人三级在线视频| 欧美v亚洲v综合ⅴ国产v| 亚洲人成在线观看一区二区| 麻豆久久久久久久| 欧美性一级生活| 专区另类欧美日韩| 国产精品亚洲一区二区三区妖精| 亚洲图片自拍偷拍| 97精品电影院| 紧缚奴在线一区二区三区| 91麻豆视频网站| 久久亚洲二区三区| 青青草精品视频| 欧美日韩色一区| 夜夜揉揉日日人人青青一国产精品| 精品一区二区av| 日韩精品一区二| 日韩不卡一二三区| 欧美日韩精品福利| 青青草成人在线观看| 欧美久久久久久久久久| 亚洲综合在线第一页| 91视频.com| 亚洲综合男人的天堂| 色综合色狠狠天天综合色| 国产精品免费久久| 93久久精品日日躁夜夜躁欧美| 国产欧美视频一区二区| 日韩女优制服丝袜电影| 亚洲免费伊人电影| 成人三级伦理片| 国产精品免费免费| 91免费看片在线观看| 国产精品久久久久久妇女6080| 国产a区久久久| 国产精品天天看| 99re在线视频这里只有精品| 国产精品久久久久久久久久免费看| 国产成人精品三级麻豆| 国产精品麻豆久久久| 91蝌蚪porny| 17c精品麻豆一区二区免费| 99久久精品一区二区| 伊人夜夜躁av伊人久久| 欧美日韩精品欧美日韩精品一| 麻豆freexxxx性91精品| 久久亚区不卡日本| 成人毛片老司机大片| 亚洲精品高清视频在线观看| 欧美绝品在线观看成人午夜影视| 免费在线观看一区二区三区| 国产欧美1区2区3区| 日本高清不卡aⅴ免费网站| 日韩av电影免费观看高清完整版 | 日本欧美加勒比视频| 久久久久久麻豆| av成人免费在线观看| 日韩福利视频网| 国产清纯白嫩初高生在线观看91 | 久久精品国产99久久6| 欧美国产在线观看| 欧美日韩国产美女| 极品美女销魂一区二区三区 | 国产精品美女久久久久久久| 欧美日韩在线播放三区四区| 国产一区二区三区精品欧美日韩一区二区三区 | 免费在线观看一区| 精品国产污污免费网站入口| 亚洲成人久久影院| 成人免费在线视频| 91国模大尺度私拍在线视频| 秋霞电影网一区二区| 亚洲天堂a在线| 日韩一区二区三区高清免费看看| 激情欧美一区二区三区在线观看| 亚洲伦在线观看| 91精品国产福利在线观看 | 国产精品资源在线观看| 亚洲自拍与偷拍| 国产精品水嫩水嫩| 日韩一级片网站| 在线观看不卡一区| 成a人片国产精品| 久久国产精品无码网站| 亚洲图片欧美一区| 亚洲美女视频一区| 中文字幕一区二区三区不卡在线| 日韩免费性生活视频播放| 欧美色精品在线视频| fc2成人免费人成在线观看播放 | 日本伊人午夜精品| 亚洲国产综合视频在线观看| √…a在线天堂一区| 欧美极品另类videosde| 国产亚洲自拍一区| 精品少妇一区二区三区日产乱码| 51精品秘密在线观看| 欧美性猛片aaaaaaa做受| 91久久免费观看| 欧亚洲嫩模精品一区三区| 色哟哟一区二区三区| 99vv1com这只有精品| 91麻豆国产精品久久| 色综合色综合色综合| 91丨九色丨尤物| 欧美亚日韩国产aⅴ精品中极品| 91香蕉视频黄| 日本黄色一区二区| 欧美三级一区二区| 欧美精品日韩一本| 日韩视频一区二区| 精品电影一区二区| 欧美国产1区2区| 亚洲欧美日韩精品久久久久| 一区二区三区中文字幕电影| 亚洲电影第三页| 日本不卡高清视频| 国产麻豆成人精品| av一区二区三区| 欧美另类z0zxhd电影| 欧美一区二区三区四区五区| 精品美女一区二区三区| 国产欧美精品一区aⅴ影院| 亚洲欧美日韩久久| 日日骚欧美日韩| 国产精品自拍三区| 在线亚洲一区二区| 欧美不卡一二三| 国产精品你懂的在线欣赏| 亚洲一区在线观看视频| 久久精品国产免费| av在线综合网| 欧美一区二区三区喷汁尤物| 国产欧美日韩激情| 亚洲综合在线第一页| 国产一区二区在线观看免费 | 蜜臀av国产精品久久久久| 国产不卡一区视频| 欧美日韩国产成人在线91| 26uuu亚洲综合色| 一区二区日韩电影| 国产高清不卡一区| 欧美中文字幕一区| 国产片一区二区三区| 亚洲成人自拍一区| 成人毛片视频在线观看| 欧美一级免费大片| 亚洲欧美日韩在线不卡| 韩国成人福利片在线播放| 欧美在线色视频| 国产精品免费观看视频| 美女视频第一区二区三区免费观看网站| 成人影视亚洲图片在线|