📄 qam_16.cpp
字号:
#include "QAM_16.h"
#include"define.h"
QAM_16::QAM_16()
{
}
QAM_16::~QAM_16()
{
}
void QAM_16::qam(int *indata,double *iout,double *qout,int Nbit)
{
int i,j,ml=4,m2=ml/2,count=0,ich,qch;
double iv[4]={-3,-1,3,1},k=sqrt(10);
for(i=0;i<Nbit/ml;i++)
{
ich=0;
qch=0;
for(j=0;j<ml;j++)
{
if(j<m2)
ich=(int)(ich+pow(2,m2-j-1)*indata[count+j]);
else
qch=(int)(qch+pow(2,ml-j-1)*indata[count+j]);
}
iout[i]=iv[ich]/k;
qout[i]=iv[qch]/k;
count+=ml;
}
}
void QAM_16::de_qam(double *ich,double *qch,int *demod_data,int Nbit)
{
int i,a,ml=4;
double k=sqrt(10);
for(i=0;i<Nbit;i++)
{
ich[i]=ich[i]*k;
qch[i]=qch[i]*k;
if(ich[i]>0)
{
demod_data[ml*i+0]=1;
a=1;
if((ich[i]-a*2)>0)
demod_data[ml*i+1]=0;
else
demod_data[ml*i+1]=1;
}
else
{
demod_data[ml*i+0]=0;
a=-1;
if((ich[i]-a*2)>0)
demod_data[ml*i+1]=1;
else
demod_data[ml*i+1]=0;
}
if(qch[i]>0)
{
demod_data[ml*i+2]=1;
a=1;
if((qch[i]-a*2)>0)
demod_data[ml*i+3]=0;
else
demod_data[ml*i+3]=1;
}
else
{
demod_data[ml*i+2]=0;
a=-1;
if((qch[i]-a*2)>0)
demod_data[ml*i+3]=1;
else
demod_data[ml*i+3]=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -