实信号、复信号Es、N0、EsN0、EbN0、SNR的含义及关系详解

关于EsN0、EbN0与SNR三者关系的描述,在MATLAB帮助文档中搜索词条“AWGN Channel”有比较详细的描述,但有些细节没有讲清楚。
实信号、复信号Es、N0、EsN0、EbN0、SNR的含义及关系详解_第1张图片
简单翻译解释一下,就是

  • SNR表示每个采样点的信号噪声比。
  • EbN0表示每个比特能量与噪声功率谱密度的比值。
  • EsN0表示每个符号能量与噪声功率谱密度的比值。

EsN0与EbN0的关系

实信号、复信号Es、N0、EsN0、EbN0、SNR的含义及关系详解_第2张图片
EsN0与EbN0的关系比较简单,上面描述了一大堆,核心是
如果不和信道编码一起算,假设为 M M M进制调制,那么其关系式为
E s / N 0 ( d B ) = E b / N 0 ( d B ) + 10 log ⁡ 10 ( M ) {E_s}/{N_0}({\rm{dB}}) = {E_b}/{N_0}({\rm{dB}}) + 10{\log _{10}}(M) Es/N0(dB)=Eb/N0(dB)+10log10(M)

重点是EsN0和SNR的关系,如下

EsN0与SNR的关系

实信号、复信号Es、N0、EsN0、EbN0、SNR的含义及关系详解_第3张图片
实信号、复信号Es、N0、EsN0、EbN0、SNR的含义及关系详解_第4张图片
也就是说,对于

  • 复信号
    E s / N 0 ( d B ) = 10 log ⁡ 10 ( T s y m / T s a m p ) + S N R ( d B ) = 10 log ⁡ 10 ( F s / R B ) + S N R ( d B ) {E_s}/{N_0}({\rm{dB}}) = 10{\log _{10}}({T_{sym}}/{T_{samp}}) + SNR({\rm{dB}})\\ = 10{\log _{10}}({F_s}/{R_B}) + SNR({\rm{dB}}) Es/N0(dB)=10log10(Tsym/Tsamp)+SNR(dB)=10log10(Fs/RB)+SNR(dB)

  • 实信号
    E s / N 0 ( d B ) = 10 log ⁡ 10 ( 0.5 ∗ T s y m / T s a m p ) + S N R ( d B ) = 10 log ⁡ 10 ( 0.5 ∗ F s / R B ) + S N R ( d B ) {E_s}/{N_0}({\rm{dB}}) = 10{\log _{10}}({0.5*T_{sym}}/{T_{samp}}) + SNR({\rm{dB}})\\ = 10{\log _{10}}({0.5*F_s}/{R_B}) + SNR({\rm{dB}}) Es/N0(dB)=10log10(0.5Tsym/Tsamp)+SNR(dB)=10log10(0.5Fs/RB)+SNR(dB)

其中对复信号的情况进行了推导,过程有了,不再赘述,核心是

N 0 = N / B n {N_0} = N/{B_n} N0=N/Bn

为噪声双边功率谱密度,将其代入即可,各参数代表的含义为

  • S S S为输入信号的功率,单位W
  • N N N为噪声功率,单位W
  • B n B_n Bn为噪声带宽,单位Hz
  • F s F_s Fs为采样频率,单位Hz

那么问题是,实信号关系式为什么比复信号多乘了0.5,且在下面有说明“Note that…”,即对于复信号的情况,噪声带宽为

B n = F s = 1 / T s a m p {B_n} = {F_s} = 1/{T_{{\rm{samp}}}} Bn=Fs=1/Tsamp

那么对于实信号,噪声带宽是多少呢?其实,对于实信号,噪声带宽为

B n = F s / 2 {B_n} = {F_s/2} Bn=Fs/2

这样就不难得到实信号时EsN0与SNR的关系了,但为什么实信号时噪声带宽为 F s / 2 F_s/2 Fs/2,或许可以这样理解,实信号的频谱是关于 F s / 2 F_s/2 Fs/2对称的,也就是说只有一半的频谱是有用的,自然噪声的影响只能算 F s / 2 F_s/2 Fs/2的带宽范围;而对于复信号,更准确地说是解析信号,其频谱是在 0 − F s 0-F_s 0Fs范围内的,噪声的影响为整个 F s F_s Fs范围,所以此时噪声带宽为 F s F_s Fs

仿真验证

awgn函数加噪源码说明

out = awgn(sig, reqSNR, 'measured')

一般来说awgn输入为该3个参数,sig表示将要加噪的信号,reqSNR表示信噪比(信号功率与噪声功率之比),'measure’表示在加噪之前计算信号功率。

函数参数中指定为’measured’时,在加入噪声之前计算信号功率。

sigPower = sum(abs(sig(:)).^2)/numel(sig); % linear

reqSNR单位为dB形式,转换为线性形式

reqSNR = 10^(reqSNR/10);

则噪声功率为

noisePower = sigPower/reqSNR;

然后再生成高斯白噪声,分为实信号和复信号两种情况,复信号时噪声为

noise = sqrt(noisePower/2)* (randn(size(sig)) + 1i*randn(size(sig)));

实信号时噪声为

noise = sqrt(noisePower)* randn(size(sig));

其中,randn函数作用为生成功率为1的高斯白噪声序列。

EsN0与SNR关系验证(以BPSK调制为例)

N = 300; % 符号个数
sym = randi([0 1],1,N);
Fs = 9600;
RB = 200;
alpha = 0.3; % 滚降系数
fc = 3000; % 载波
fd = Fs/RB; % 过采倍数
EsN0 = 15; % 符号信噪比 dB为单位
LinEsN0 = 10^(EsN0/10); % 线性单位的EsN0
SNR = EsN0 - 10*log10(Fs/RB); % SNR 以dB为单位
%% 基带信号
M = 2;
Len = N*Fs/RB;
t = 0:1/Fs:(Len-1)/Fs;
pha_bpsk = pskmod(sym,M); % 生成相位
figure;plot(pha_bpsk,'.b','MarkerSize',15);
title('BPSK星座图');

h = rcosine(RB,Fs,'fir/sqrt',alpha); % 根升余弦成形
bas_bpsk = rcosflt(pha_bpsk,RB,Fs,'filter',h).';
delay=(length(h)+1)/2; %%%%时延
bas_bpsk=bas_bpsk(delay:end-delay+1);
sig_bpsk_pure = bas_bpsk.*exp(1j*2*pi*fc*t);
sig_bpsk_n = awgn(sig_bpsk_pure,SNR,'measured');

% EsN0 SNR的关系
sigPower = sum(abs(sig_bpsk_pure(:)).^2)/numel(sig_bpsk_pure); % 信号功率
sigma_n2=sigPower/10^(SNR/10); % 噪声功率
noise = sqrt(sigma_n2/2)* (randn(size(sig_bpsk_pure)) + 1i*randn(size(sig_bpsk_pure))); % 生成复高斯噪声
nlen = length(noise);
Et = sum(abs(noise).^2); % 噪声能量(时域)
Ef = sum(abs(fft(noise)/sqrt(nlen)).^2);% 噪声能量(频域)
wd = ones(1,fd); % 积分窗,长度为一个符号采样点数
Es = mean(conv(abs(sig_bpsk_pure).^2,wd)); % 单个符号的能量(时域符号周期积分求平均的方法)
Es1 = sum(abs(sig_bpsk_pure(:)).^2)/N; % 单个符号的能量(总能量除以符号个数)
N0 = mean(abs(noise).^2); % 噪声双边功率谱密度 通过时域求得
N0pri = mean(abs(fft(noise)/sqrt(nlen)).^2); % 噪声双边功率谱密度 通过频域求得
EsN0pri = Es/N0; % 通过计算符号能量和噪声双边功率谱密度得到的EsN0
SNRpri = 10*log10(sigPower/sigma_n2); % 信噪比

计算结果

代码中EsN0设置为15dB,计算结果因生成的随机符号序列不同可能会稍有不同,但都满足以上分析,将本人计算结果分享如下

噪声能量
Et = 450.0291
Ef = 450.0291

信号功率
sigPower = 0.0208

噪声功率
sigma_n2 = 0.0315

信号单个符号能量
Es = 0.9928
Es1 = 0.9960

噪声双边功率谱密度
N0 = 0.0313
N0pri = 0.0313

EsN0线性单位值
LinEsN0 = 31.6228

EsN0通过Es/N0得到的值
EsN0pri = 31.7677

由公式得到的SNR值(dB为单位)
SNR = -1.8124

由10*log10(信号功率/噪声功率)计算得到的SNR值(dB为单位)
SNRpri =  -1.8124

你可能感兴趣的:(posgradu小记)