📄 psk8.m
字号:
%%---------- Clear -------------------%%
clc
clear
Snr_dB = [ 1 4 8 10 12 14 16 17] ; % SNR in decibel
N=30000;
Bit_error = zeros(1,length(Snr_dB)) ;
% Bit_error_amph = zeros(1,length(Snr_dB)) ;
Frame_error = zeros(1,length(Snr_dB)) ;
Sim_num_bound=10;
FER_bound=10;
for Snr_dB_index = 1:length(Snr_dB)
Sim_num=0;
while(1)
Sim_num=Sim_num+1;
b = randint( 1, N, 2) ;
N8psk=length(b);
k=0;
s8(0+1)=cos(pi/4)+j*sin(pi/4);
s8(4+1)=j;
s8(6+1)=-cos(pi/4)+j*sin(pi/4);
s8(2+1)=-1;
s8(3+1)=-s8(0+1);
s8(7+1)=-s8(4+1);
s8(5+1)=-s8(6+1);
s8(1+1)=-s8(2+1);
for i=1:3:N8psk
k=k+1;
b2d=b(i)*4+b(i+1)*2+b(i+2)*1;
a(k)=s8(b2d+1);
end
r = awgn(a, Snr_dB(Snr_dB_index), 'measured') ;
M=length(r);
for i=1:M
e(i,:)=abs(r(i)-s8);
[Y,I]=min(e(i,:));
switch I
case 1
dec((i-1)*3+1:i*3)=[0 0 0];
case 2
dec((i-1)*3+1:i*3)=[0 0 1];
case 3
dec((i-1)*3+1:i*3)=[0 1 0];
case 4
dec((i-1)*3+1:i*3)=[0 1 1];
case 5
dec((i-1)*3+1:i*3)=[1 0 0];
case 6
dec((i-1)*3+1:i*3)=[1 0 1];
case 7
dec((i-1)*3+1:i*3)=[1 1 0];
case 8
dec((i-1)*3+1:i*3)=[1 1 1];
end
end
Bit_error(Snr_dB_index) = Bit_error(Snr_dB_index) + sum( b ~= dec);
if( sum(b~=dec) > 0 )
Frame_error(Snr_dB_index) = Frame_error(Snr_dB_index) + 1 ;
end
% b_dec_ap=perfect_ring(r);
% Bit_error_amph(Snr_dB_index) = Bit_error_amph(Snr_dB_index) + sum( b ~= b_dec_ap);
if (Sim_num >= Sim_num_bound)
if( (Frame_error(Snr_dB_index) >= FER_bound) )
break;
end
end
end
BER(Snr_dB_index) = Bit_error(Snr_dB_index)/(Sim_num*N)
% BER_amph(Snr_dB_index) = Bit_error_amph(Snr_dB_index)/(Sim_num*N)
end
semilogy(Snr_dB,BER,'s-k');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -