用基带等效的方式仿真8-DPSK载波调制信号在AWGN信道下的误码率和误比特率,并与理论值相比较。

用基带等效的方式仿真8-DPSK载波调制信号在AWGN信道下的误码率和误比特率,并与理论值相比较。

代码实现如下:

%8DPSK信号在AWGN信道下的传输性能
n = 100000;    %每种信噪比下发送的符号数
M = 8;                          %8PSK信号的空间点数
Gray = [0,1,2,3,6,7,4,5];               %格雷编码的规则
snr = 5:20;                     %snr代表信噪比Es/N0
snr1 = 10.^(snr/10);
%生成等概率分布的0,1,2,3,4,5,6,7序列,序列为1Xn的数据
xn = randi([0,7],1,n);  %消息数据
xn_1 = Gray(xn+1);   %格雷码映射
xn_2 = dpskmod(xn_1,M);  %8_PSK
spow = norm(xn_2).^2/n;   %求每一个符号的平均功率
for index=1:length(snr)
    sigma = sqrt(spow/(2*snr1(index)));  %求噪声功率
    r = xn_2 + sigma*(randn(1,length(xn_2))+1i*randn(1,length(xn_2)));  %信号通过AWGN信道
    xn_demod = dpskdemod(r,M);     %抽样判决
    dec_xn = Gray(xn_demod+1);   %格雷码的逆映射
    
    [err,ber(index)] = biterr(xn(2:end),dec_xn(2:end),log2(M));   %求误比特率
    [err,ser(index)] = symerr(xn(2:end),dec_xn(2:end));
end
ser1 = 2*qfunc(sqrt(snr1)*sin(pi/M));    %理论误符号率
ber1 = ser1/log2(M);                 %理论误比特率
figure();
semilogy(snr,ber,'-ko',snr,ser,"-k*",snr,ber1,snr,ser1);
title("8DPSK信号在AWGN信道下的传输性能");
xlabel("Eb/N0");
ylabel("误比特率和误符号率");
legend("误比特率","误符号率","理论误比特率", "理论误符号率");

你可能感兴趣的:(通信原理,数字通信,信息传输,信号处理)