1. clear;
2. close all;
3. M = 2; % PSK与DPSK进制数
4. N = 200000; % 仿真点数
5. data = randi([0, 1], N, 1); %产生随机信号
6.
7. % 信噪比变化范围
8. SNR = 0:1:10;
9.
10. % M 进制PSK调制
11. modData = pskmod(data, M);
12.
13. % M 进制 DPSK 调制
14. modData1 = dpskmod(data, M);
15.
16. % 在不同信噪比下进行仿真
17. for i = 1:length(SNR)
18.
19. % AWGN信道,'measured'代表加入噪声前测量信号能量
20. rxSig = awgn(modData, SNR(i), 'measured');
21.
22. % M 进制PSK解调
23. rxData = pskdemod(rxSig, M);
24.
25. %M 进制PSK理论误比特率
26. berQ = berawgn(SNR./log2(M),'psk',M,'nondiff');
27.
28. % 统计误码比特数以及误比特率
29. [err_bit(i), err_rate(i)] = biterr(data, rxData);
30. End
31.
32. for i = 1:length(SNR)
33. % AWGN信道,'measured'代表加入噪声前测量信号能量
34. rxSig1 = awgn(modData1, SNR(i), 'measured');
35.
36. % M 进制 DPSK 解调
37. rxData1 = dpskdemod(rxSig1, M);
38.
39. %M 进制 DPSK 理论误比特率
40. berD = berawgn(SNR./log2(M),'dpsk',M);
41.
42. % 统计误码比特数以及误比特率
43. [err_bit1(i), err_rate1(i)] = biterr(data, rxData1);
44. End
45.
46. % 绘制误比特率与信噪比曲线,纵轴为对数尺度
47. semilogy(SNR./log2(M) ,err_rate,'r*',SNR./log2(M) ,berQ,'r-',SNR./log2(M) ,err_rate1,'ro',SNR./log2(M) ,berD,'r--');
48. title('2进制PSK与DPSK在AWGN 信道下的BER性能');
49. xlabel('Eb/N0(dB)');ylabel('BER');
50. axis([0 6 1e-4 1]);
51. legend('2PSK实际仿真误比特率曲线','2PSK理论误比特率曲线','2DPSK实际仿真误比特率曲线','2DPSK理论误比特率曲线')
评论1