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

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

?? channelfading.c

?? 基于MATLAB的GSM仿真系統 并附有直接畫出性能曲線的簡化程序。
?? C
字號:
/*********************************************************************
* 文件名稱: ChannelFading.c
* 主要內容: GSM系統六徑衰落信道仿真。采用Jakes衰落模型。
* 本程序Model A選用第二組數據。
The reduced setting (6 taps) is defined thereunder.
model A (Typical case for hilly terrain)
number     Relative    Average relative    doppler 
          time (μs)	   power (dB)	   spectrum
	    (1)	     (2)	(1)      (2)	
1   	0.0	     0.0	0.0	     0.0    	CLASS
2	    0.1	     0.2	-1.5	-2.0    	CLASS
3   	0.3	     0.4	-4.5	-4.0	    CLASS
4   	0.5      0.6	-7.5	-7.0    	CLASS
5	    15.0	15.0	-8.0	-6.0	    CLASS
6	    17.2	17.2	-17.7	-12.0   	CLASS

model B (Profile for equalization test)

Tap		Relative    Average relative	doppler 
number	time (μs)	   power (dB)	   spectrum
1   	0.0				0.0				CLASS
2	    3.2	     		0.0				CLASS
3   	6.4				0.0				CLASS
4   	9.6				0.0				CLASS
5	    12.8			0.0				CLASS
6	    16.0			0.0				CLASS
*=====================================================================
* 版權:作者個人所有
* 
* 當前版本: 0.1.3
* 作    者: 金利忠,蔣登峰, 高霽
* 完成日期: 2004年5月25日
*=====================================================================

**********************************************************************/
#include "ChannelFading.h"


/*void main()
{
	double in_Xdata[FRAME_LEN];
	double in_Ydata[FRAME_LEN];
	double out_Xdata[FRAME_LEN+maxDELAY];
	double out_Ydata[FRAME_LEN+maxDELAY];
	int i;
	in_Xdata[0]=1;
	in_Ydata[0]=1;
	for (i = 1; i<FRAME_LEN; i++)
	{
		in_Xdata[i] =0; // generate the random data
		in_Ydata[i] =0;
		//printf("%f,%f\n", in_Xdata[i],in_Ydata[i]); 
	}
	JakesModel(in_Xdata,in_Ydata,out_Xdata,out_Ydata);
	for (i = 0; i<FRAME_LEN+maxDELAY; i++)
	{
		printf("%f,,,%f---Time:%d\n", out_Xdata[i],out_Ydata[i],i); 
	}
}*/
/*****************************************************
函數名:void JakesModel(const double *Xcomplex, const double *Ycomplex,
				 double *oXcomplex, double *oYcomplex)
函數功能:每一徑平坦衰落和延時后合成函數。
輸入參數說明:
    Xcomplex: 輸入數據實部分量,double型指針
    Ycomplex: 輸入數據虛部分量,double型指針

輸出參數說明:
    oXcomplex:輸出數據實部分量,double型指針
    
返回值:oYcomplex:輸出數據虛部分量,double型指針

其它說明:這個程序中,直接對輸出數據進行處理,沒有在數據處理是額外的寄存器的需求。
          具體可參考程序文檔。

修改日期        版本號      修改人        修改內容
------------------------------------------------------
2004/05/25      V1.0        金利忠        創建
2004/05/26      V1.1        金利忠
2004/05/29      V1.2        金利忠
2004/05/30      V1.3        金利忠
******************************************************/

void JakesModel(const double *Xcomplex, const double *Ycomplex,
				 double *oXcomplex, double *oYcomplex, int lasttime[1],
				 unsigned int gseed[2],double SNR,const int chchoice,
				 const int vchoice,const double chfac)
{
/*****************************************
	先對模型中用到的參數初始化。
*****************************************/
	int jj,n,i;	
	int j;
	int delay[]={0,0,0,1,16,19};//延時初始化
	double power_rela[]={0,-2.0,-4.0,-7.0,-6.0,-12.0};//相對功率的初始化
	//For debug
	//int delay[TAP_NUMBER]={0,0,0,1,16,19};//延時初始化
	//double power_rela[6]={0,-200,-200,-200,-200,-1200};//相對功率的初始化
	double power[6];
	int p;
	double sum_power=0.0;
	double gM[FRAME_LEN];
	double gN[FRAME_LEN];

	double Xcc[1];
	double Xss[1];
	double outX;
	double outY;
	int tap_num;  //TAP計數器
	double sigma;

	int maxDELAY = 19;
	double jakesWM;

	jakesWM = (2*PI*vchoice*1000.0*9)/(3600.0*3.0);

	if (chchoice == 2)
	{
		delay[0] = 0;
		delay[1] = 3;
		delay[2] = 7;
		delay[3] = 10;
		delay[4] = 14;
		delay[5] = 17;

		power_rela[0] = 0;
		power_rela[1] = 0;
		power_rela[2] = 0;
		power_rela[3] = 0;
		power_rela[4] = 0;
		power_rela[5] = 0;

		maxDELAY = 17;
	}

/*	for(jj=1;jj<JAKES_N0+1;jj++)  //取得gama和sita
	{
       
      
		for(i=1;i<TAP_NUMBER+1;i++)
			{
			beta[jj-1][i-1]=PI*jj*i/(JAKES_N0+1);
			gama[i-1]=(2*PI*(i-1))/(JAKES_N0+1);
			sita[jj-1][i-1]=beta[jj-1][i-1]+gama[i-1];
		}
	}

	for(n=1;n<JAKES_N+1;n++)  //取得alfa和Wn
	{
		alfa[n-1]=(2*PI*n)/JAKES_N;
		JAKES_Wn[n-1]=jakesWM*cos(alfa[n-1]);
	}
*/
	for (p=0; p<TAP_NUMBER; p++)
	{
		power[p]=pow(10.0,power_rela[p]/10);
		sum_power=sum_power+power[p]; //取相對功率的和。
	}
/*****************************************
	產生高斯噪聲。
*****************************************/

	G_rand(gM,gN,gseed);
	sigma = pow(10.0,(SNR/10));
/*****************************************
	開始進行多徑衰落合成。
*****************************************/
	//初始化輸出數據前maxDELAY位
	for(j=0;j<maxDELAY;j++)
	{
		oXcomplex[j]=0;
		oYcomplex[j]=0;
	}

	Xcc[0]=0;
	Xss[0]=0;
	if (lasttime[0]>=1073741824)             //prevent overflow
	{
		lasttime[0] = 0;
	}

	for(j=0;j<FRAME_LEN;j++)  //j時刻
	{
		//kkkk=Xcomplex[j];
		oXcomplex[j+maxDELAY]=Xcomplex[j];
		oYcomplex[j+maxDELAY]=Ycomplex[j];
		//最大延時的一徑先算
		h_gen(TAP_NUMBER, j+lasttime[0], Xcc, Xss, jakesWM);
        outX=sqrt(power[TAP_NUMBER-1]/sum_power)*oXcomplex[j];
        outY=sqrt(power[TAP_NUMBER-1]/sum_power)*oYcomplex[j];
		oXcomplex[j]=outX*(*Xcc)-outY*(*Xss);
		oYcomplex[j]=outY*(*Xcc)+outX*(*Xss);
		//再從第一徑開始算,一共剩下5徑
		for(tap_num=1;tap_num<TAP_NUMBER;tap_num++)
		{
			h_gen(tap_num, j+lasttime[0], Xcc, Xss, jakesWM);
			outX=sqrt(power[tap_num-1]/sum_power)*oXcomplex[j+maxDELAY-delay[tap_num-1]];
			outY=sqrt(power[tap_num-1]/sum_power)*oYcomplex[j+maxDELAY-delay[tap_num-1]];
			oXcomplex[j]=(outX*(Xcc[0])-outY*(Xss[0]))+oXcomplex[j];
			oYcomplex[j]=(outY*(Xcc[0])+outX*(Xss[0]))+oYcomplex[j];
		}
        oXcomplex[j]=gM[j]/(sqrt(2*sigma))+oXcomplex[j]/(sqrt(chfac));//加入噪聲M[j]
        oYcomplex[j]=gN[j]/(sqrt(2*sigma))+oYcomplex[j]/(sqrt(chfac));//加入噪聲N[j]
	}

	lasttime[0]=j+lasttime[0];
}
/*****************************************************
函數名:void h_gen(const int tap, const int tim, double *Xc, double *Xs)

函數功能:產生每一徑的衰落系數h(j,tap),使用的是Jakes模型。
輸入參數說明:
    tap: 輸入多徑的徑數,int型
    tim: 輸入時間,int型

輸出參數說明:
    oXcomplex:輸出數據實部分量,double型指針
    oYcomplex:輸出數據虛部分量,double型指針
返回值:

其它說明

修改日期        版本號      修改人        修改內容
------------------------------------------------------
2004/05/25      V1.0        金利忠        創建
2004/05/26      V1.1        金利忠
2004/05/29      V1.2        金利忠
2004/05/30      V1.3        金利忠
******************************************************/
void h_gen(const int tap, const int tim, double Xc[1], double Xs[1], double jakesWM)
{
	double XsS=0;
	double XcS=0;
	double cos_w;
	double cos_alfa;
	double factor_n;
	double Nalpha=PI; //待定
	//double alpha_hat=0.5*PI;  //待定
	double betan[JAKES_N0];
	int i,jj,n;

//Classical Jakes
/*	for(jj=1;jj<JAKES_N0+1;jj++)  //取得gama和sita
	{ 
		betan[jj-1] = (PI*jj)/(JAKES_N0);
	}
	
	for(jj=1;jj<JAKES_N0+1;jj++)  //取得gama和sita
	{
       
      
		for(i=1;i<TAP_NUMBER+1;i++)
		{
			beta[jj-1][i-1]=(PI*jj)/(JAKES_N0+1);
			gama[i-1]=(2*PI*(i-1))/(JAKES_N0+1);
			sita[jj-1][i-1]=beta[jj-1][i-1]+gama[i-1];
		}
	}

	for(n=1;n<JAKES_N+1;n++)  //取得alfa和Wn
	{
		alfa[n-1]=(2*PI*n)/JAKES_N;
		JAKES_Wn[n-1]=(jakesWM)*cos(alfa[n-1]);
	}

	for(i=1;i<JAKES_N0+1;i++)
		{
			cos_w=cos(JAKES_Wn[i-1]*tim*(SYMBLE_T1)+sita[i-1][tap-1]);
			//XcS=XcS+2*cos(beta[i-1][tap-1])*cos_w;
			//XsS=XsS+2*sin(beta[i-1][tap-1])*cos_w;
			XcS=XcS+2*cos(betan[i-1])*cos_w;
			XsS=XsS+2*sin(betan[i-1])*cos_w;
		}
		cos_alfa=cos(jakesWM*tim*(SYMBLE_T1)+(tap)*(PI/2));
		factor_n=sqrt(2.0/JAKES_N);
		//XcS=2*XcS+sqrt(2)*fabs(cos(Nalpha*tap))*cos_alfa;
		//XsS=2*XsS+sqrt(2)*sin(Nalpha*tap)*cos_alfa;
		XcS = XcS+cos_alfa;
		XsS = XsS+cos_alfa;
		Xc[0]=factor_n*XcS;
		Xs[0]=factor_n*XsS;
*/
	//Modified (Ref to IEEE)
	for(jj=1;jj<JAKES_N0+1;jj++)  //取得gama和sita
	{
       
      
		for(i=1;i<TAP_NUMBER+1;i++)
		{
			beta[jj-1][i-1]=(PI*jj*i)/(JAKES_N0+1);
			gama[i-1]=(2*PI*(i-1))/(JAKES_N0+1);
			sita[jj-1][i-1]=beta[jj-1][i-1]+gama[i-1];
		}
	}

	for(n=1;n<JAKES_N+1;n++)  //取得alfa和Wn
	{
		alfa[n-1]=(2*PI*n)/JAKES_N;
		JAKES_Wn[n-1]=(jakesWM)*cos(alfa[n-1]);
	}

	for(i=1;i<JAKES_N0+1;i++)
		{
			cos_w=cos(JAKES_Wn[i-1]*tim*(SYMBLE_T1)+(tap*PI/2));
			XcS=XcS+2*cos(beta[i-1][tap-1])*cos_w;
			XsS=XsS+2*sin(beta[i-1][tap-1])*cos_w;
			//XcS=XcS+2*cos(betan[i-1])*cos_w;
			//XsS=XsS+2*sin(betan[i-1])*cos_w;
		}
		cos_alfa=cos(jakesWM*tim*(SYMBLE_T1)+(tap)*(PI/2));
		factor_n=sqrt(2.0/JAKES_N);
		XcS=XcS+2*cos_alfa*fabs(cos(PI*tap));
		XsS=XsS+2*cos_alfa*sin(PI*tap);
		//XcS = XcS+cos_alfa;
		//XsS = XsS+cos_alfa;
		Xc[0]=factor_n*XcS;
		Xs[0]=factor_n*XsS;
}
/*void h_gen(const int tap, const int tim, double Xc[1], double Xs[1])
{
	double XsS=0;
	double XcS=0;
	double cos_w;
	double cos_alfa;
	double factor_n;
	double Nalpha=PI; //待定
	double alpha_hat=0.5*PI;  //待定
	int i,jj,n;
	double betan[JAKES_N0];

	//printf("%d\n",JAKES_N0);

	for(jj=1;jj<JAKES_N0+1;jj++)  //取得gama和sita
	{ 
		betan[jj-1] = (PI*jj)/(JAKES_N0);
	}
	
	for(n=1;n<JAKES_N+1;n++)  //取得alfa和Wn
	{
		alfa[n-1]=(2*PI*n)/JAKES_N;
		JAKES_Wn[n-1]=jakesWM*cos(alfa[n-1]);
	}

	for(i=1;i<JAKES_N0+1;i++)
		{
			cos_w=cos(JAKES_Wn[i-1]*tim*(SYMBLE_T1));//+alpha_hat*tap);//sita[i-1][tap-1]);
			XcS=XcS+2*cos(betan[i-1])*cos_w;
			XsS=XsS+2*sin(betan[i-1])*cos_w;
		}
		cos_alfa=cos(jakesWM*tim*SYMBLE_T1);//+alpha_hat*tap);//gama[tap-1]
		factor_n=sqrt(2.0/JAKES_N);
		//XcS=2*XcS+2*fabs(cos(Nalpha*tap))*cos_alfa;//sqrt(2)
		//XcS=2*XcS+2*cos(Nalpha*tap)*cos_alfa;//sqrt(2)
		//XsS=2*XsS+2*sin(Nalpha*tap)*cos_alfa;//sqrt(2)
		XcS = XcS+cos_alfa;
		XsS = XsS+cos_alfa;
		Xc[0]=factor_n*XcS;
		Xs[0]=factor_n*XsS;
}*/
/*****************************************************
函數名:void G_rand(double *M, double *N)

函數功能:產生高斯隨機變量,采用Box-Muller方法。
無輸出參數
輸出參數說明:
    M: 輸出復數X變量,double型
    N: 輸出復數Y變量,double型
返回值:

其它說明:均值為0,方差為1

修改日期        版本號      修改人        修改內容
------------------------------------------------------
2004/05/27      V1.0        高霽           創建
2004/05/30      V1.1        金利忠   原型:if (ii == 1)
	                                    {
		                                     X[1] = 999987256;
                                             Y[1] = 198102025;
	                                    }
******************************************************/
void G_rand(double *M, double *N, unsigned int gseed[2])
{
	unsigned long int X[FRAME_LEN];
	unsigned long int Y[FRAME_LEN];
    double XX[FRAME_LEN];
	double YY[FRAME_LEN];
	unsigned long int a = 16807;
    unsigned long int b = 0;
    unsigned long int c = 2147483647;
    int ii;
	double d,e,f,g;

	for(ii = 0;ii < FRAME_LEN;ii++)
	{
		if (ii == 0)
		{
			X[0] = gseed[0];
            Y[0] = gseed[1];
		}
        else
		{
			X[ii] = (a * X[ii-1] + b)%c;
		    Y[ii] = (a * Y[ii-1] + b)%c;
		}
		XX[ii] = X[ii] / (double)c;
        YY[ii] = Y[ii] / (double)c;
        d=sqrt(-2 * log(XX[ii]));
        e=cos(2 * PI * YY[ii]);
        f=sqrt(-2 * log(XX[ii]));
        g=sin(2 * PI * YY[ii]);
        M[ii] = d * e;
        N[ii] = f * g;
	}
	gseed[0] = X[FRAME_LEN - 1];
	gseed[1] = Y[FRAME_LEN - 1];
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91热久久久做人人| 国产一区二区在线视频| 色综合天天综合在线视频| 欧美日韩视频在线第一区 | 精品福利一区二区三区免费视频| 奇米综合一区二区三区精品视频 | 性做久久久久久免费观看欧美| 91福利小视频| 日日嗨av一区二区三区四区| 欧美成人激情免费网| 成人免费毛片高清视频| 亚洲裸体xxx| 欧美一卡2卡3卡4卡| 国产精品综合av一区二区国产馆| 亚洲欧洲成人自拍| 欧美日韩成人一区二区| 国产一区二区网址| 一区二区三区不卡视频在线观看| 666欧美在线视频| 国产米奇在线777精品观看| 亚洲精品免费一二三区| 91精品福利在线一区二区三区| 国产91精品欧美| 亚洲成人免费视频| 欧美激情自拍偷拍| 欧美高清视频一二三区| 成人精品国产免费网站| 肉丝袜脚交视频一区二区| 亚洲国产一区二区在线播放| 精品毛片乱码1区2区3区 | 91国偷自产一区二区三区观看| 丝袜美腿亚洲一区二区图片| 中文字幕免费不卡在线| 欧美肥妇bbw| 91亚洲精品久久久蜜桃网站| 麻豆精品视频在线观看免费| 亚洲日穴在线视频| 日韩无一区二区| 在线观看免费亚洲| 粉嫩13p一区二区三区| 美腿丝袜一区二区三区| 亚洲综合精品久久| 中文字幕人成不卡一区| 欧美www视频| 欧美日韩国产另类不卡| 99久久99久久免费精品蜜臀| 久久99精品久久只有精品| 亚洲福中文字幕伊人影院| **欧美大码日韩| 国产午夜一区二区三区| 日韩午夜中文字幕| 7777精品伊人久久久大香线蕉| 色综合久久综合网| 成人av综合在线| 国产成人在线电影| 国内精品第一页| 麻豆成人在线观看| 免费在线一区观看| 日韩不卡一区二区三区| 亚洲va欧美va人人爽| 一区二区三区波多野结衣在线观看| 亚洲国产激情av| 国产亚洲成aⅴ人片在线观看| 日韩免费观看高清完整版| 制服视频三区第一页精品| 欧美日韩精品一区二区天天拍小说| 一本久久精品一区二区| av在线不卡网| 91免费观看国产| 91年精品国产| 色呦呦网站一区| 在线视频综合导航| 在线观看视频一区二区欧美日韩| 91视频一区二区三区| 一本一道综合狠狠老| 91成人免费在线| 欧洲精品中文字幕| 欧美中文字幕一区二区三区亚洲 | 欧美精品久久久久久久多人混战| 欧美亚一区二区| 在线观看国产91| 欧美三级在线视频| 337p亚洲精品色噜噜| 欧美久久一二区| 日韩一区二区精品在线观看| 精品国产一区二区精华| 精品国产伦一区二区三区观看方式| 亚洲精品在线网站| 中文av一区二区| 欧美亚洲综合色| 成人午夜视频网站| 色婷婷综合久色| 欧美视频一区二区在线观看| 欧美日韩一区二区电影| 日韩精品在线网站| 国产人成亚洲第一网站在线播放 | 国产精品美日韩| 亚洲蜜桃精久久久久久久| 亚洲韩国一区二区三区| 欧美aaaaaa午夜精品| 精品一区二区三区在线播放| 国产成人亚洲综合色影视| 99麻豆久久久国产精品免费| 欧美日韩国产成人在线91| 欧美大片一区二区| 亚洲国产电影在线观看| 亚洲黄色尤物视频| 免费av网站大全久久| 成人av免费网站| 777午夜精品免费视频| 国产性天天综合网| 亚洲国产精品天堂| 国产盗摄精品一区二区三区在线| 色综合网色综合| 欧美v国产在线一区二区三区| 中文字幕一区二区三区不卡在线| 天堂一区二区在线| 国产成a人亚洲精| 欧美猛男超大videosgay| 久久精品男人的天堂| 亚洲综合色婷婷| 国产一区美女在线| 欧美三级电影在线看| 欧美激情一区二区| 秋霞电影一区二区| 日本韩国欧美在线| 国产亚洲欧美在线| 青青草一区二区三区| 91社区在线播放| 久久色视频免费观看| 亚洲与欧洲av电影| 懂色一区二区三区免费观看| 9191成人精品久久| 一区二区三区精品视频在线| 国产精品自拍网站| 日韩视频在线观看一区二区| 亚洲三级在线看| 国产凹凸在线观看一区二区| 欧美在线观看一二区| 国产农村妇女毛片精品久久麻豆| 免费在线看成人av| 欧美日韩中文字幕一区| 国产精品久久福利| 国产精品一卡二卡| 26uuu国产在线精品一区二区| 天堂久久一区二区三区| 在线观看一区二区精品视频| 国产欧美精品日韩区二区麻豆天美| 青青草伊人久久| 在线播放日韩导航| 亚洲一区免费视频| 欧美综合视频在线观看| 亚洲精品乱码久久久久久黑人| 成人美女视频在线看| 国产三级欧美三级| 久久精品99国产精品| 欧美一区二区三区系列电影| 亚欧色一区w666天堂| 欧美日韩视频一区二区| 亚洲最新在线观看| 在线视频欧美精品| 亚洲一卡二卡三卡四卡| 91国产成人在线| 一区二区三区影院| 欧美视频中文字幕| 亚洲一区二区三区小说| 在线免费视频一区二区| 亚洲一区在线观看网站| 欧美日韩精品一区二区三区四区| 亚洲宅男天堂在线观看无病毒| 91成人国产精品| 亚洲一区二区黄色| 3atv在线一区二区三区| 麻豆国产一区二区| 久久久久久久久97黄色工厂| 国产成人精品免费在线| 国产精品每日更新在线播放网址 | 国产露脸91国语对白| 国产拍欧美日韩视频二区| 丁香一区二区三区| 亚洲丝袜另类动漫二区| 色狠狠一区二区三区香蕉| 亚洲va欧美va人人爽| 精品裸体舞一区二区三区| 国产成人精品三级麻豆| 亚洲精品国产精华液| 欧美夫妻性生活| 久久99在线观看| 中文字幕在线观看一区二区| 91麻豆国产在线观看| 日韩电影在线观看电影| 欧美精品久久一区| 国产精品一区在线观看你懂的| 中文字幕一区二区三区四区| 欧美三级电影一区| 国产在线精品一区在线观看麻豆| 国产精品每日更新在线播放网址| 在线视频观看一区| 国产在线不卡一区| 亚洲欧美日韩在线|