void MOD::decQPSK(const COMPLEX_NUMBER* pIn, double* pOutNRZ, int inLen) { //补充QPSK解调程序 for (int i = 0; i < inLen; i+=2) { } }
时间: 2024-05-16 15:13:46 浏览: 179
const int *a int * const a区别实例
5星 · 资源好评率100%
在这个函数中,我们需要对输入的 QPSK 调制信号进行解调,得到 NRZ (非归零)信号。
QPSK 调制信号是由两路正交的基带信号调制而成的。因此,我们需要将输入信号分为实部和虚部,然后对它们分别进行解调。
下面是一个可能的代码实现:
```c++
void MOD::decQPSK(const COMPLEX_NUMBER* pIn, double* pOutNRZ, int inLen)
{
for (int i = 0; i < inLen; i+=2)
{
double valI = pIn[i].real();
double valQ = pIn[i+1].imag();
// 计算 NRZ 信号
pOutNRZ[i] = valI > 0 ? 1 : -1;
pOutNRZ[i+1] = valQ > 0 ? 1 : -1;
}
}
```
在这个实现中,我们首先从 `pIn` 中取出实部和虚部,分别保存在 `valI` 和 `valQ` 中。然后,我们根据实部和虚部的正负号来判断 NRZ 信号的取值,将其保存在 `pOutNRZ` 数组中。
注意,这个实现中我们假设所有的输入信号都是经过 QPSK 调制的,因此我们每次需要处理两个元素。如果有需要,你可以在函数开头添加一些判断条件,以确保输入信号长度是偶数。
阅读全文