📄 psk.m
字号:
%********************************************************
% psk.m
% 8PSK通信系统蒙特卡罗仿真
% 在不同信噪比Eb/N0下发送10000符号的蒙特卡罗仿真,
% 其中Eb=Es/2是比特能量,图中给出了误码率和相应的理论误码率
% Programmed by Liu Dejian
% Dtat:2008-3-8
%********************************************************
clear
clc
echo on
SNRindB1=0:2:10
% SNRindB1=0:2:20
SNRindB2=0:0.1:10
% SNRindB2=0:0.1:20
for i=1:length(SNRindB1),
[pb,ps]=cm_sm32(SNRindB1(i)); % simulated bit and symbol error rates
smld_bit_err_prb(i)=pb;
smld_symbol_err_prb(i)=ps;
end;
for i=1:length(SNRindB2),
SNR=exp(SNRindB2(i)*log(10)/10); % signal to noise ratio
% 由SNRindB2(i)=10log(SNR)=10ln(SNR)/ln10得 SNRindB2(i)*ln(10)/10=ln(SNR)
% 二边取以e为底的对数得:SNR=exp(SNRindB2(i)*log(10)/10)
theo_symbol_err_prb(i)=2*Qfunct(sqrt(6*SNR)*sin(pi/8)); % theoretical symbol error rate
theo_bit_err_prb(i)=2*Qfunct(sqrt(6*SNR)*sin(pi/8))/3; % theoretical bit error rate
% 理论比特误码率Pb≈Pm/k=2Q[sqrt(2kEb/N0)*sin(pi/m)]/k,其中Pm=2Q[sqrt(2kEb/N0)*sin(pi/m)]为理论符号误码率
% 对于8PSK则m=8,k=log2(m)=3代入上式得理论比特误码率theo_bit_err_prb(i)=2*Qfunct(sqrt(6*SNR)*sin(pi/8))/3;
end;
% Plotting commands follow
semilogy(SNRindB1,smld_bit_err_prb,'*');
hold on
semilogy(SNRindB1,smld_symbol_err_prb,'O');
semilogy(SNRindB2,theo_bit_err_prb);
semilogy(SNRindB2,theo_symbol_err_prb,'r');
axis([0,10,10^(-5),10^0]);
% axis([0,20,10^(-10),10^0]);
grid
xlabel('Eb/No in dB')
ylabel('error probability')
title('8PSK通信系统的蒙特卡洛仿真')
legend('仿真比特误码率','仿真符号误码率','理论比特误码率','理论符号误码率')
% gtext('(注:“—”理论比特误码率;“r—”理论符号误码率;“*”仿真比特误码率;“o”仿真符号误码率)')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -