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

📄 qam_16.cpp

📁 有关卷积编码的维特比算法,是硬判决的啊,希望大家
💻 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 + -