void MOD::dec16QAM(const COMPLEX_NUMBER* pIn, double* pOutNRZ, int inLen) { //补充16QAM解调程序,注意按能量归一化后的16QAM星座图进行数据解调 for (int i = 0; i < inLen; ++i) { pOutNRZ[i * 4 + 0] = pIn[i].x; pOutNRZ[i * 4 + 1] = pIn[i].y; pOutNRZ[i * 4 + 2] = C_16QAM_scale * 2 - fabs(pIn[i].x); pOutNRZ[i * 4 + 3] = C_16QAM_scale * 2 - fabs(pIn[i].y); } }
时间: 2024-02-26 08:55:32 浏览: 82
这段代码是用来实现16QAM解调的,输入是一个COMPLEX_NUMBER类型的指针pIn,表示接收到的信号,inLen表示pIn中元素的个数。输出是一个double类型的指针pOutNRZ,表示解调后的数据。
具体实现中,先将pIn中每个元素的实部和虚部分别赋值给pOutNRZ中的两个连续位置,然后根据16QAM星座图进行能量归一化,将每个元素的实部和虚部的绝对值与2倍归一化因子的差分别赋值给pOutNRZ中后两个位置。这样,pOutNRZ中的每4个位置就对应一个16QAM码元的4个比特。
阅读全文