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

📄 gmsk.cpp

📁 高斯编码调制
💻 CPP
字号:
/*gmsk调制,包括差分编码和调制*/
/*chenfangni,2003.5.17*/
#include "g.h"
#include "math.h"

void main()
//void gmsk(int tx_burst[148])
{
	int tx_burst[148]={0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,0,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,0,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,0,1,0,1,0,1,1,0,0,0};
int a[149];
int temp[148];
int burst[148];
int f_res[9600];//(148+2)*64=9600;2是调制产生的
int sum[9600];
double theta[9600];
int i;
int n;
double I[9600],Q[9600];
int I_quali[9600],Q_quali[9600];

//高斯脉冲的量化
double G_FUN[192]={0,9.5853e-006,1.995e-005,3.1144e-005,4.3217e-005,5.6223e-005,7.0216e-005,8.5252e-005,	0.00010139,	0.00011868,	0.0001372,	0.000157,	0.00017813,	0.00020068,
0.00022469,	0.00025023,	0.00027737,	0.00030616,	0.00033668,	0.00036898,	0.00040312,0.00043917,	0.00047718,	0.0005172,	0.0005593,	0.00060352,	0.0006499,	0.00069851,
0.00074936,	0.00080251,	0.00085798,	0.0009158,	0.00097599,	0.0010386,	0.0011036,0.0011709,	0.0012407,	0.0013129,	0.0013875,	0.0014644,	0.0015436,	0.0016252,
0.0017089,	0.0017949,	0.001883,	0.0019731,	0.0020652,	0.0021592,	0.0022551,0.0023526,	0.0024517,	0.0025523,	0.0026542,	0.0027573,	0.0028615,	0.0029667,
0.0030726,	0.0031792,	0.0032862,	0.0033935,	0.0035009,	0.0036082,	0.0037153,0.003822,	    0.0039281,	0.0040333,	0.0041376,	0.0042407,	0.0043424,	0.0044425,
0.0045409,	0.0046373,	0.0047315,	0.0048235,	0.0049129,	0.0049996,	0.0050835,0.0051643,	0.0052419,	0.0053161,	0.0053869,	0.0054539,	0.0055172,	0.0055765,
0.0056318,	0.0056828,	0.0057296,	0.005772,	0.0058099,	0.0058433,	0.005872,0.005896,	    0.0059153,	0.0059298,	0.0059395,	0.0059444,	0.0059444,	0.0059395,
0.0059298,	0.0059153,	0.005896,	0.005872,	0.0058433,	0.0058099,	0.005772,0.0057296,	    0.0056828,	0.0056318,	0.0055765,	0.0055172,	0.0054539,	0.0053869,
0.0053161,	0.0052419,	0.0051643,	0.0050835,	0.0049996,	0.0049129,	0.0048235,0.0047315,	0.0046373,	0.0045409,	0.0044425,	0.0043424,	0.0042407,	0.0041376,
0.0040333,	0.0039281,	0.003822,	0.0037153,	0.0036082,	0.0035009,	0.0033935,0.0032862,	0.0031792,	0.0030726,	0.0029667,	0.0028615,	0.0027573,	0.0026542,
0.0025523,	0.0024517,	0.0023526,	0.0022551,	0.0021592,	0.0020652,	0.0019731,0.001883,	    0.0017949,	0.0017089,	0.0016252,	0.0015436,	0.0014644,	0.0013875,
0.0013129,	0.0012407,	0.0011709,	0.0011036,	0.0010386,	0.00097599,	0.0009158,0.00085798,	0.00080251,	0.00074936,	0.00069851,	0.0006499,	0.00060352,	0.0005593,
0.0005172,	0.00047718,	0.00043917,	0.00040312,	0.00036898,	0.00033668,	0.00030616,0.00027737,	0.00025023,	0.00022469,	0.00020068,	0.00017813,	0.000157,	0.0001372,
0.00011868,	0.00010139,	8.5252e-005,	7.0216e-005,	5.6223e-005,	4.3217e-005,	3.1144e-005,1.995e-005,	9.5853e-006,	-6.6087e-020
};

int g[192];

for(i=0; i<192; i++)
g[i]=int(G_FUN[i]*pow(2,20));//量化

/*差分编码,burst = diff_enc(tx_burst);*/
a[0]=1;
for (i=1;i<149;i++)
   a[i]=tx_burst[i-1];
for (i=1;i<=148;i++)
{
	temp[i-1]=a[i]^a[i-1];
    burst[i-1]=1-2*temp[i-1];
}

//gmsk调制
for (i=0;i<9600;i++)
f_res[i]=0;
for (n=1;n<=148;n++)
{
	for (i=(n-1)*OSR;i<(n+2)*OSR;i++)
       f_res[i]=f_res[i]+burst[n]*g[i-(n-1)*64];
}

// 计算GMSK调制信号的相位
for(i=0;i<9600;i++)
sum[i]=0;
sum[0]=f_res[0];
for(i=1;i<9600;i++)
	sum[i]=sum[i-1]+f_res[i];
for(i=0;i<9600;i++)
{  
	theta[i]=3.1415926*sum[i]/pow(2,20);//将pi量化成3
	//GMSK基带调制信号的I/Q两路信号
	I [i]=cos(theta[i]);
	Q [i]=sin(theta[i]);
	I_quali[i]=int(I[i]*pow(2,17));
	Q_quali[i]=int(Q[i]*pow(2,17));
}


}

⌨️ 快捷键说明

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