云计算百科
云计算领域专业知识百科平台

QPSK盲信噪比估计|二阶矩M2M4算法原理与Matlab仿真

QPSK盲信噪比估计|二阶矩M2M4算法原理与Matlab仿真

摘要

在全数字QPSK接收机中,Es/N0E_s/N_0Es/N0信噪比是链路质量评估、环路参数自适应调整、解调性能分析的核心指标。传统信噪比估计依赖导频或训练序列,存在带宽开销。本文详细讲解二阶/四阶矩(M2M4)盲信噪比估计算法,仅利用同步后的QPSK业务数据符号,无需任何导频辅助,通过信号统计矩分离信号能量与噪声能量,实现纯盲估计。本文完整推导数学公式、分析算法特性、给出可直接运行的Matlab仿真代码,并嵌入已有QPSK接收机链路,适合工程实现与毕业设计落地。

一、前言

在前面系列文章中,我们已经完整搭建了一套全数字QPSK通信接收机:

成型滤波 & 匹配滤波 → 平方律FFT定时同步 → Farrow插值定时恢复 → 4次方FFT开环频偏估计 → Costas闭环载波同步 → 导频相位模糊校正。

整套链路已经可以稳定完成解调。但一个完整接收机还需要实时信道质量监测,也就是信噪比估计。

本文讲解盲信噪比估计算法:

不依赖导频、不依赖已知信息、仅通过接收数据的统计特性估计Es/N0。

针对QPSK恒模调制,最经典、最简单、最适合嵌入式/FPGA实现的就是:M2M4二阶四阶矩盲估计算法。

二、信号模型

经过定时同步、载波同步、相位校正后,接收符号已经完全对齐,仅残留高斯白噪声(其实定时后就可以估计了,不用非等到相位校准后):

r(k)=s(k)+n(k)​r(k) = s(k) + n(k)​r(k)=s(k)+n(k)

其中:

  • s(k)s(k)s(k):标准QPSK复符号,恒模能量 ∣s(k)∣2=Es|s(k)|^2=E_ss(k)2=Es
  • n(k)n(k)n(k):复高斯白噪声,零均值、方差 σn2\\sigma_n^2σn2
  • 噪声功率谱密度:N0=σn2N_0=\\sigma_n^2N0=σn2

我们需要估计的物理量:

EsN0=符号能量噪声单边功率谱密度​\\frac{E_s}{N_0} = \\frac{\\text{符号能量}}{\\text{噪声单边功率谱密度}}​N0Es=噪声单边功率谱密度符号能量

三、M2M4盲估计核心原理

盲估计的核心思想:QPSK信号和高斯噪声的高阶统计特性完全不同,可以通过二阶矩、四阶矩分离信号与噪声。

1. 定义二阶矩 M2

二阶矩为接收信号模平方的统计均值:

M2=E[∣r(k)∣2]=E[∣s(k)+n(k)∣2]M_2 = \\mathbb E\\left[ |r(k)|^2 \\right]=\\mathbb E\\left[ |s(k)+n(k)|^2 \\right]M2=E[r(k)2]=E[s(k)+n(k)2]

展开得:

∣s+n∣2=(s+n)(s+n)∗=(s+n)(s∗+n∗)=∣s∣2+∣n∣2+sn∗+ns∗​
\\begin{aligned}
|s+n|^2 &= (s+n)(s+n)^{*} \\\\
&=(s+n)(s^{*}+n^{*}) \\\\
&=|s|^2 + |n|^2 + s n^{*} + n s^{*}
\\end{aligned}​
s+n2=(s+n)(s+n)=(s+n)(s+n)=s2+n2+sn+ns

取期望:

M2=E[∣s∣2]+E[∣n∣2]+E[sn∗]+E[ns∗] M_2=\\mathbb E\\left[|s|^2\\right]+\\mathbb E\\left[|n|^2\\right]+\\mathbb E\\left[s n^{*}\\right]+\\mathbb E\\left[n s^{*}\\right]M2=E[s2]+E[n2]+E[sn]+E[ns]

由于信号与噪声相互独立,且信号、噪声均为零均值:

E[sn∗]=E[s]E[n∗]=0,E[ns∗]=E[n]E[s∗]=0\\mathbb E\\left[s n^{*}\\right]=\\mathbb E[s]\\mathbb E[n^{*}]=0,\\quad \\mathbb E\\left[n s^{*}\\right]=\\mathbb E[n]\\mathbb E[s^{*}]=0E[sn]=E[s]E[n]=0,E[ns]=E[n]E[s]=0

交叉期望项全部归零,因此:

M2=Es+σn2​M_2 = E_s + \\sigma_n^2​M2=Es+σn2

物理意义:接收总功率 = 信号功率 + 噪声功率

2. 定义四阶矩 M4

四阶矩为接收信号模四次方的统计均值:

M4=E[∣r(k)∣4]M_4 = \\mathbb E\\left[ |r(k)|^4 \\right]M4=E[r(k)4]

其中 ∣s+n∣4=(∣s+n∣2)2|s+n|^4=\\big(|s+n|^2\\big)^2s+n4=(s+n2)2

开始展开:

记:
A=∣s∣2=Es,B=∣n∣2,C=sn∗+s∗nA=|s|^2=E_s,\\quad B=|n|^2,\\quad C = s n^{*}+s^{*} nA=s2=Es,B=n2,C=sn+sn
∣s+n∣2=A+B+C|s+n|^2=A+B+Cs+n2=A+B+C

∣s+n∣4=(A+B+C)2=A2+B2+C2+2AB+2AC+2BC
\\begin{aligned}
|s+n|^4 &= (A+B+C)^2 \\\\
&=A^2+B^2+C^2 +2AB +2AC +2BC
\\end{aligned}
s+n4=(A+B+C)2=A2+B2+C2+2AB+2AC+2BC

M4=E[A2]+E[B2]+E[C2]+2E[AB]+2E[AC]+2E[BC]
M_4=\\mathbb E[A^2]+\\mathbb E[B^2]+\\mathbb E[C^2]
+2\\mathbb E[AB]+2\\mathbb E[AC]+2\\mathbb E[BC]
M4=E[A2]+E[B2]+E[C2]+2E[AB]+2E[AC]+2E[BC]

逐项计算:

  • E[A2]=E[Es2]=Es2\\mathbb E[A^2]=\\mathbb E[E_s^2]=E_s^2E[A2]=E[Es2]=Es2
  • E[B2]=E[∣n∣4]=2σn4\\mathbb E[B^2]=\\mathbb E\\left[|n|^4\\right]=2\\sigma_n^4E[B2]=E[n4]=2σn4(复高斯噪声四阶矩性质)
  • 2E[AB]=2E[Es∣n∣2]=2Esσn22\\mathbb E[AB]=2\\mathbb E\\left[E_s|n|^2\\right]=2E_s\\sigma_n^22E[AB]=2E[Esn2]=2Esσn2
  • C2=(sn∗+s∗n)2=s2(n∗)2+2∣s∣2∣n∣2+(s∗)2n2C^2=\\big(s n^{*}+s^{*}n\\big)^2 = s^2(n^{*})^2+2|s|^2|n|^2+(s^{*})^2 n^2C2=(sn+sn)2=s2(n)2+2∣s2n2+(s)2n2QPSK符号E[s2]=0\\mathbb E[s^2]=0E[s2]=0因此E[C2]=2Esσn2\\mathbb E[C^2]=2E_s\\sigma_n^2E[C2]=2Esσn2
  • 2E[AC]=0, 2E[BC]=02\\mathbb E[AC]=0,\\ 2\\mathbb E[BC]=02E[AC]=0, 2E[BC]=0由零均值独立随机变量性质,交叉期望为0。

全部合并得到四阶矩正确表达式:

M4=Es2+4Esσn2+2σn4M_4 = E_s^2 +4E_s\\sigma_n^2 +2\\sigma_n^4M4=Es2+4Esσn2+2σn4

3. 联立方程求解信号、噪声能量

方程组:

{M2=Es+σn2M4=Es2+4Esσn2+2σn4
\\begin{cases}
M_2 = E_s + \\sigma_n^2 \\\\
M_4 = E_s^2 +4E_s\\sigma_n^2 +2\\sigma_n^4
\\end{cases}
{M2=Es+σn2M4=Es2+4Esσn2+2σn4

利用 M22=(Es+σn2)2=Es2+2Esσn2+σn4M_2^2=(E_s+\\sigma_n^2)^2 = E_s^2+2E_s\\sigma_n^2+\\sigma_n^4M22=(Es+σn2)2=Es2+2Esσn2+σn4

构造:

2M22−M4=2(Es+σn2)2−(Es2+4Esσn2+2σn4)=2(Es2+2Esσn2+σn4)−Es2−4Esσn2−2σn4=Es2
\\begin{aligned}
2M_2^2-M_4
&=2(E_s+\\sigma_n^2)^2-\\big(E_s^2+4E_s\\sigma_n^2+2\\sigma_n^4\\big) \\\\
&=2(E_s^2+2E_s\\sigma_n^2+\\sigma_n^4)-E_s^2-4E_s\\sigma_n^2-2\\sigma_n^4 \\\\
&=E_s^2
\\end{aligned}
2M22M4=2(Es+σn2)2(Es2+4Esσn2+2σn4)=2(Es2+2Esσn2+σn4)Es24Esσn22σn4=Es2

于是得到信号能量闭式解:

E^s=2M22−M4\\hat E_s = \\sqrt{2M_2^2 – M_4}E^s=2M22M4

噪声能量:

σ^n2=M2−E^s\\hat \\sigma_n^2 = M_2 – \\hat E_sσ^n2=M2E^s

四、工程离散实现方式

实际接收机中,使用有限符号长度做样本平均代替数学期望:

M^2=1L∑k=1L∣rk∣2\\hat M_2 = \\frac{1}{L}\\sum_{k=1}^L |r_k|^2M^2=L1k=1Lrk2

M^4=1L∑k=1L∣rk∣4​\\hat M_4 = \\frac{1}{L}\\sum_{k=1}^L |r_k|^4​M^4=L1k=1Lrk4

带入上述公式即可实时计算当前帧 Es/N0E_s/N_0Es/N0

五、完整Matlab仿真代码

function [EsN0_dB] = SNR_M2M4(rx_sym)
L = 1000;

% 计算二阶矩、四阶矩
M2 = mean(abs(rx_sym).^2);
M4 = mean(abs(rx_sym).^4);

% 求解信号能量
Es_sq = 2*M2^2 M4;

if Es_sq > 0
Es_hat = sqrt(Es_sq);
Noise_hat = M2 Es_hat;
if Noise_hat > 0
EsN0 = Es_hat / Noise_hat;
EsN0_dB = 10*log10(EsN0);
else
EsN0_dB = nan;
end
else
EsN0_dB = nan;
end
end

六、仿真结果

在这里插入图片描述

结果可以看出估计出的信噪比与真实加噪信号的信噪比基本一直,误差较小。

赞(0)
未经允许不得转载:网硕互联帮助中心 » QPSK盲信噪比估计|二阶矩M2M4算法原理与Matlab仿真
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!