Chinaunix

标题: GNU Octave示例:BPSK BER计算 [打印本页]

作者: frost.wrath    时间: 2008-06-30 00:26
标题: GNU Octave示例:BPSK BER计算

                                                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




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2