【各种信噪比联系与区别详解】实信号、复信号Es、N0、符号信噪比EsN0、带内信噪比、比特信噪比EbN0、SNR的含义及关系详解

75 篇文章 378 订阅 ¥199.90 ¥99.00

引言

关于EsN0、EbN0与SNR三者关系的描述,在MATLAB帮助文档中搜索词条“AWGN Channel”有比较详细的描述,但有些细节没有讲清楚。
在这里插入图片描述
简单翻译解释一下,就是

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

EsN0与EbN0的关系

在这里插入图片描述
EsN0与EbN0的关系比较简单,上面描述了一大堆,核心是
如果不和信道编码一起算,假设为 M M M进制调制,那么其关系式为

  • 8
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
以下是一个简单的MATLAB程序,用于仿真4PAM和4QAM调制信号在高斯信道下的性能。程序流程如下: 1. 生成长度为N的随机比特序列。 2. 将比特序列分组成M个符号,每个符号用2个比特表示(4PAM)或4个比特表示(4QAM)。 3. 将符号映射到相应的调制信号点。 4. 生成高斯白噪声并将其加到调制信号上。 5. 对接收信号进行软输出检测,并将检测结果与原始比特序列进行比较,以计算错误比特率和误符号率。 6. 重步骤2-5,直到达到指定的误比特率或达到指定的信噪比范围。 程序中的模拟误差率和理论误差率都被记录在数组中,并且用图形表示。程序中也包含了一些与理论误差率比较的注释。 ```matlab clear all; close all; % 模拟参数 nbits = 100000; % 比特序列长度 M = 4; % 调制阶数 SNR_dB_start = 0; % 开始信噪比 SNR_dB_end = 14; % 结束信噪比 SNR_points = SNR_dB_end - SNR_dB_start + 1; % 信噪比点数 EbN0_dB = SNR_dB_start:SNR_dB_end; % 信噪比(Eb/N0EsN0_dB = EbN0_dB + 10*log10(log2(M)); % 信噪比Es/N0) % 生成随机比特序列 bits = randi([0 1], nbits, 1); % 生成码元 if M == 4 % 4PAM symbols = zeros(nbits/2, 1); for i = 1:nbits/2 symbols(i) = bits(2*i-1)*2 + bits(2*i); end elseif M == 16 % 16QAM symbols = zeros(nbits/4, 1); for i = 1:nbits/4 symbols(i) = bits(4*i-3)*8 + bits(4*i-2)*4 + bits(4*i-1)*2 + bits(4*i); end end % 生成调制信号点 if M == 4 % 4PAM x = [-3 -1 1 3]; elseif M == 16 % 16QAM x = [-3 -1 1 3]; y = [-3 -1 1 3]; [X,Y] = meshgrid(x,y); x = reshape(X,1,M); y = reshape(Y,1,M); end % 模拟误差率和理论误差率 BER_sim = zeros(1, SNR_points); BER_theory = zeros(1, SNR_points); SER_sim = zeros(1, SNR_points); SER_theory = zeros(1, SNR_points); % 模拟循环 for i = 1:SNR_points % 信噪比 EsN0 = 10^(EsN0_dB(i)/10); sigma = sqrt(1/(2*EsN0)); % 重次数 N = ceil(10^6 / nbits); % 初始化 BER_sim_total = 0; SER_sim_total = 0; % 循环 for j = 1:N % 加入高斯白噪声 if M == 4 % 4PAM noise = sigma * randn(nbits/2, 1); elseif M == 16 % 16QAM noise = sigma * (randn(nbits/2, 1) + 1i*randn(nbits/2, 1))/sqrt(2); end r = x(symbols+1)' + noise'; % 软输出检测 if M == 4 % 4PAM r_hat = zeros(size(r)); r_hat(r < -2) = -3; r_hat(r >= -2 & r < 0) = -1; r_hat(r >= 0 & r < 2) = 1; r_hat(r >= 2) = 3; llr = zeros(size(r)); llr(r < -2) = -2*(r(r < -2)+3)/sigma^2; llr(r >= -2 & r < 0) = -2*(r(r >= -2 & r < 0)+1)/sigma^2; llr(r >= 0 & r < 2) = 2*(r(r >= 0 & r < 2)-1)/sigma^2; llr(r >= 2) = 2*(r(r >= 2)-3)/sigma^2; bits_hat = zeros(nbits, 1); for k = 1:nbits/2 bits_hat(2*k-1) = (r_hat(k)+3)/2; bits_hat(2*k) = mod(r_hat(k), 2); end elseif M == 16 % 16QAM r_hat = zeros(size(r)); for k = 1:M r_hat(abs(r-(x(k)+y(k)*1i))<sigma/2) = x(k)+y(k)*1i; end llr = zeros(size(r)); for k = 1:M llr(abs(r-(x(k)+y(k)*1i))<sigma/2) = -(abs(r(abs(r-(x(k)+y(k)*1i))<sigma/2)-x(k)-y(k)*1i)/sigma)^2; end bits_hat = zeros(nbits, 1); for k = 1:nbits/4 d = r_hat(k); bits_hat(4*k-3) = (real(d)>0); bits_hat(4*k-2) = (imag(d)>0); bits_hat(4*k-1) = (abs(real(d))>1); bits_hat(4*k) = (abs(imag(d))>1); end end % 计算误差率 BER_sim_total = BER_sim_total + sum(bits ~= bits_hat); SER_sim_total = SER_sim_total + sum(symbols ~= (r_hat-x+1)'); end % 计算平均误差率 BER_sim(i) = BER_sim_total / (nbits*N); SER_sim(i) = SER_sim_total / (nbits/2*N); if M == 4 % 4PAM BER_theory(i) = qfunc(sqrt(2*EsN0)); SER_theory(i) = 2*(1-qfunc(sqrt(3*EsN0/2))); elseif M == 16 % 16QAM BER_theory(i) = 1/2*qfunc(sqrt(2*EsN0/5)) + 1/2*qfunc(sqrt(2*EsN0/10)); SER_theory(i) = 4*(1-qfunc(sqrt(2/5*EsN0))); end % 输出 fprintf('Eb/N0 = %0.2f dB, BER = %0.5f (sim) / %0.5f (theory), SER = %0.5f (sim) / %0.5f (theory)\n', ... EbN0_dB(i), BER_sim(i), BER_theory(i), SER_sim(i), SER_theory(i)); end % 绘图 figure; semilogy(EbN0_dB, BER_sim, 'bo-', EbN0_dB, BER_theory, 'r.-'); legend('Simulated', 'Theoretical'); xlabel('Eb/N0 (dB)'); ylabel('Bit Error Rate (BER)'); title('4PAM and 4QAM Modulation Performance in Gaussian Channel'); figure; semilogy(EbN0_dB, SER_sim, 'bo-', EbN0_dB, SER_theory, 'r.-'); legend('Simulated', 'Theoretical'); xlabel('Eb/N0 (dB)'); ylabel('Symbol Error Rate (SER)'); title('4PAM and 4QAM Modulation Performance in Gaussian Channel'); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codersnote

对学生党 赞赏是鼓励也是鞭策!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值