例9-3:二进制相移键控,BPSK

该博客详细介绍了二进制相移键控(BPSK)的原理,并通过MATLAB进行仿真。每个SNR级别下发送10000个符号,随着SNR的提升,误码率(BER)下降,但BER估计的准确性也因差错减少而降低。这提示我们,仿真中可能需要根据SNR调整符号数量,或者持续运行直到每个SNR等级下观察到相同的错误数量。
摘要由CSDN通过智能技术生成
%File: c9_MCBPSK.m
clear all
snrdB_min=-3;snrdB_max=8;								%信噪比范围
snrdB=snrdB_min:1:snrdB_max;							%从最小值逐1加到最大值
Nsymbols=input('Enter number of symbols > ');			%输入发送符号总数
snr=10.^(snrdB/10);										%单位换算(去dB)
h=waitbar(0,'SNR Iteration');							%调用waitbar
len_snr=length(snrdB);
for j=1:len_snr
	waitbar(j/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
close(h)												%关闭waitbar
ber_sim=errors/Nsymbols;								%误码率估计值
ber_theor=0.5*erfc(sqrt(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')
%End of script file.

对于每一个SNR值,发送Nsymbols=10000个符号,运行结果如下图所示。注意,当SNR增加时,BER估计器的可靠度会变差,由于差错发生次数减小。这一现象表明,仿真所发送的符号数可能与SNR有关,或者是连续运行仿真程序,直到对每一个SNR值都记录到相同数目的差错为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值