免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2726 | 回复: 0
打印 上一主题 下一主题

GNU Octave示例:BPSK BER计算 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-30 00:26 |只看该作者 |正序浏览

                                                BPSK,即二进制相位键控,一种数字调制技术。
信息表示:使用两个相位来表示信息"0"和"1",相应的两种信号互为取反。
解调判决:最佳判决门限为0,当抽样值为正时,判决为1;抽样值为负,则判决为0。
噪声服从高斯分布,它的方差 sigma^2 = 1/(2*SNR), sigma = sqrt(1/(2*SNR)), 其中SNR=Eb/N0,Eb为比特能量,N0为噪声功率谱密度(PSD)。
以下Octave脚本依次分析SNR从-3到8对应的BER。对于每个SNR值,重复若干次实验(重复次数由用户输入),记录在加性高斯型噪声的作用下,所发生的判决错误的总次数,再除以实验次数,其结果作为BER。
附图为实验次数为10000时的BER曲线。
snrdB_min=-3;snrdB_max=8;
snrdB=snrdB_min:1:snrdB_max;
Nsymbols=input('Enter number of symbols>');
snr=10.^(snrdB/10);
len_snr=length(snrdB);
for j=1:len_snr
    sigma=sqrt(1/(2*snr(j)));
    error_count=0;
    for k=1:Nsymbols
        d = round(rand(1));
        x_d=2*d-1;
        n_d=sigma*randn(1);
        y_d=x_d+n_d;
        if y_d>0
            d_est=1;
        else
            d_est=0;
        end
        if (d_est ~= d)
            error_count=error_count+1;
        end
    end
    errors(j)=error_count;
end
ber_sim=errors/Nsymbols;
ber_theor=q(sqrt(2*snr));
semilogy(snrdB, ber_theor, snrdB, ber_sim, 'o');
axis([snrdB_min snrdB_max 0.0001 1])
xlabel('SNR in dB')
ylabel('BER')
legend('Theoretical', 'Simulation')
grid on

参考文献:
1. Tranter, W.H. et al.  "Principles of Communication Systems Simulation with Wireless Applications"
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22344/showart_1069444.html
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP