⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 16psk的误码率
💻 TXT
字号:
1.。。%16psk调制
fc=0.002;%载波频率即中心频率
Tc=1/fc;%载波周期
fs=1;%采样频率
dt=1/fs;%采样间隔
fo=0.001;%码元速率
To=1/fo;%码元宽度
N=6;%码元个数
t=0:dt:(N*To-dt);%时间长度
a(1)=0;
a(2)=5;
a(3)=0;
a(4)=9;
a(5)=3;
a(6)=6;
for k=1:6
    for m=1:To
       c(To*(k-1)+m)=a(k);
    end;
end;
figure(1);
subplot(2,1,1); 
plot(c);
title('原学号数据');
b=[0,1,3,2,7,6,4,5,15,14,12,13,8,9,11,10];
for n=1:6
    s=a(n)+1;
    d(n)=b(s);
end;
for k=1:6
    for m=1:To
        B(To*(k-1)+m)=10*sin(2*pi*fc*t(To*(k-1)+m)+d(k)*pi/8);
       end;
end;
subplot(2,1,2); 
plot(B(1:6000));
title('16PSK调制后数据');


2echo on 
SNRindB1=0:2:10;
SNRindB2=0:0.1:10 ;
for i=1:length(SNRindB1);
   [pb,ps]=cm_sm(SNRindB1(i)); 
   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); 
   theo_err_prb(i)=2*Qfunct(sqrt(8*SNR)*sin(pi/16))/4; 
 end; 
semilogy(SNRindB1,smld_bit_err_prb,'*'); 
hold on 
semilogy(SNRindB1,smld_symbol_err_prb,'O'); 
semilogy(SNRindB2,theo_err_prb); 
axis([0,10,10^(-5),10^0]); 
grid 
xlabel('Eb/No in dB') 
ylabel('error probability') 
title('16PSK通信系统的蒙特卡洛仿真') 
gtext('(注:“—”理论误码率;“*”误比特率;“o”误符号率 )')   

3。。。function [pb,ps]=cm_sm32(snr_in_dB) 
N=10000;
E=1;
snr=10^(snr_in_dB/10);
sgma=sqrt(E/(4*2*snr));
s0000=[1 0];
s0001=[cos(pi/8) sin(pi/8)];
s0011=[cos(2*pi/8) sin(2*pi/8)];
s0010=[cos(3*pi/8) sin(3*pi/8)];
s0110=[cos(4*pi/8) sin(4*pi/8)];
s0111=[cos(5*pi/8) sin(5*pi/8)];
s0101=[cos(6*pi/8) sin(6*pi/8)];
s0100=[cos(7*pi/8) sin(7*pi/8)];
s1100=[cos(8*pi/8) sin(8*pi/8)];
s1101=[cos(9*pi/8) sin(9*pi/8)];
s1111=[cos(10*pi/8) sin(10*pi/8)];
s1110=[cos(11*pi/8) sin(11*pi/8)];
s1010=[cos(12*pi/8) sin(12*pi/8)];
s1011=[cos(13*pi/8) sin(13*pi/8)];
s1001=[cos(14*pi/8) sin(14*pi/8)];
s1000=[cos(15*pi/8) sin(15*pi/8)];
for i=1:N,
temp=rand;

if(temp<1/16)
dsource1(i)=0;
dsource2(i)=0;
dsource3(i)=0;
dsource4(i)=0;
elseif(temp<1/8)
dsource1(i)=0;
dsource2(i)=0;
dsource3(i)=0;
dsource4(i)=1;
elseif(temp<3/16)
dsource1(i)=0;
dsource2(i)=0;
dsource3(i)=1;
dsource4(i)=0;
elseif(temp<4/16)
dsource1(i)=0;
dsource2(i)=0;
dsource3(i)=1;
dsource4(i)=1;
elseif(temp<5/16)
dsource1(i)=0;
dsource2(i)=1;
dsource3(i)=0;
dsource4(i)=0;
elseif(temp<6/16)
dsource1(i)=0;
dsource2(i)=1;
dsource3(i)=0;
dsource4(i)=1;
elseif(temp<7/16)
dsource1(i)=0;
dsource2(i)=1;
dsource3(i)=1;
dsource4(i)=0;
elseif(temp<8/16)
dsource1(i)=0;
dsource2(i)=1;
dsource3(i)=1;
dsource4(i)=1;
elseif(temp<9/16)
dsource1(i)=1;
dsource2(i)=0;
dsource3(i)=0;
dsource4(i)=0;
elseif(temp<10/16)
dsource1(i)=1;
dsource2(i)=0;
dsource3(i)=0;
dsource4(i)=1;
elseif(temp<11/16)
dsource1(i)=1;
dsource2(i)=0;
dsource3(i)=1;
dsource4(i)=0;
elseif(temp<12/16)
dsource1(i)=1;
dsource2(i)=0;
dsource3(i)=1;
dsource4(i)=1;
elseif(temp<13/16)
dsource1(i)=1;
dsource2(i)=1;
dsource3(i)=0;
dsource4(i)=0;
elseif(temp<14/16)
dsource1(i)=1;
dsource2(i)=1;
dsource3(i)=0;
dsource4(i)=1;
elseif(temp<15/16)
dsource1(i)=1;
dsource2(i)=1;
dsource3(i)=1;
dsource4(i)=0;
else
dsource1(i)=1;
dsource2(i)=1;
dsource3(i)=1;
dsource4(i)=1;
end;
end;
numofsymbolerror=0;
numofbiterror=0;
for i=1:N
n(1)=gngauss(sgma);
n(2)=gngauss(sgma);
if((dsource1(i)==0)&(dsource2(i)==0)&(dsource3(i)==0)&(dsource4(i)==0))
r=s0000+n;
elseif((dsource1(i)==0)&(dsource2(i)==0)&(dsource3(i)==0)&(dsource4(i)==1))
r=s0001+n;
elseif((dsource1(i)==0)&(dsource2(i)==0)&(dsource3(i)==1)&(dsource4(i)==0))
r=s0010+n;
elseif((dsource1(i)==0)&(dsource2(i)==0)&(dsource3(i)==1)&(dsource4(i)==1))
r=s0011+n;
elseif((dsource1(i)==0)&(dsource2(i)==1)&(dsource3(i)==0)&(dsource4(i)==0))
r=s0100+n;
elseif((dsource1(i)==0)&(dsource2(i)==1)&(dsource3(i)==0)&(dsource4(i)==1))
r=s0101+n;
elseif((dsource1(i)==0)&(dsource2(i)==1)&(dsource3(i)==1)&(dsource4(i)==0))
r=s0110+n;
elseif((dsource1(i)==0)&(dsource2(i)==1)&(dsource3(i)==1)&(dsource4(i)==1))
r=s0111+n;
elseif((dsource1(i)==1)&(dsource2(i)==0)&(dsource3(i)==0)&(dsource4(i)==0))
r=s1000+n;
elseif((dsource1(i)==1)&(dsource2(i)==0)&(dsource3(i)==0)&(dsource4(i)==1))
r=s1001+n;
elseif((dsource1(i)==1)&(dsource2(i)==0)&(dsource3(i)==1)&(dsource4(i)==0))
r=s1010+n;
elseif((dsource1(i)==1)&(dsource2(i)==0)&(dsource3(i)==1)&(dsource4(i)==1))
r=s1011+n;
elseif((dsource1(i)==1)&(dsource2(i)==1)&(dsource3(i)==0)&(dsource4(i)==0))
r=s1100+n;
elseif((dsource1(i)==1)&(dsource2(i)==1)&(dsource3(i)==0)&(dsource4(i)==1))
r=s1101+n;
elseif((dsource1(i)==1)&(dsource2(i)==1)&(dsource3(i)==1)&(dsource4(i)==0))
r=s1110+n;
else
r=s1111+n;
end;
c0000=dot(r,s0000);
c0001=dot(r,s0001);
c0010=dot(r,s0010);
c0011=dot(r,s0011);
c0100=dot(r,s0100);
c0101=dot(r,s0101);
c0110=dot(r,s0110);
c0111=dot(r,s0111);
c1000=dot(r,s1000);
c1001=dot(r,s1001);
c1010=dot(r,s1010);
c1011=dot(r,s1011);
c1100=dot(r,s1100);
c1101=dot(r,s1101);
c1110=dot(r,s1110);
c1111=dot(r,s1111);

c_max=max([c0000 c0001 c0010 c0011 c0100 c0101 c0110 c0111 c1000 c1001 c1010 c1011 c1100 c1101 c1110 c1111]);
if(c0000==c_max)
decis1=0;decis2=0;decis3=0;decis4=0;
elseif(c0001==c_max)
decis1=0;decis2=0;decis3=0;decis4=1;
elseif(c0010==c_max)
decis1=0;decis2=0;decis3=1;decis4=0;
elseif(c0011==c_max),
decis1=0;decis2=0;decis3=1;decis4=1;
elseif(c0100==c_max)
decis1=0;decis2=1;decis3=0;decis4=0;
elseif(c0101==c_max)
decis1=0;decis2=1;decis3=0;decis4=1;
elseif(c0110==c_max)
decis1=0;decis2=1;decis3=1;decis4=0;
elseif(c0111==c_max)
decis1=0;decis2=1;decis3=1;decis4=1;
elseif(c1000==c_max)
decis1=1;decis2=0;decis3=0;decis4=0;
elseif(c1001==c_max)
decis1=1;decis2=0;decis3=0;decis4=1;
elseif(c1010==c_max)
decis1=1;decis2=0;decis3=1;decis4=0;
elseif(c1011==c_max)
decis1=1;decis2=0;decis3=1;decis4=1;
elseif(c1100==c_max)
decis1=1;decis2=1;decis3=0;decis4=0;
elseif(c1101==c_max)
decis1=1;decis2=1;decis3=0;decis4=1;
elseif(c1110==c_max)
decis1=1;decis2=1;decis3=1;decis4=0;
else
decis1=1;decis2=1;decis3=1;decis4=1;
end;
symbolerror=0;
if(decis1~=dsource1(i))
numofbiterror=numofbiterror+1;
symbolerror=1;
end;

if(decis2~=dsource2(i))
numofbiterror=numofbiterror+1;
symbolerror=1;
end;

if(decis3~=dsource3(i))
numofbiterror=numofbiterror+1;
symbolerror=1;
end;

if(decis4~=dsource4(i))
numofbiterror=numofbiterror+1;
symbolerror=1;
end;

if(symbolerror==1)
numofsymbolerror=numofsymbolerror+1;
end;
end;
ps=numofsymbolerror/N;
pb=numofbiterror/(4*N);
4.。。。function[gsrv1,gsrv2]=gngauss(m,sgma)
if nargin==0,
    m=0;sgma=1;
elseif nargin==1,
    sgma=m;m=0;
end;
u=rand;
z=sgma*(sqrt(2*log(1/(1-u))));
u=rand;
gsrv1=m+z*cos(2*pi*u);
gsrv2=m+z*sin(2*pi*u);

5.。。。function [y]=Qfunct(x) 
 y=(1/2)*erfc(x/sqrt(2));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -