8PSK通信系统的蒙特卡罗仿真分析.docx
《8PSK通信系统的蒙特卡罗仿真分析.docx》由会员分享,可在线阅读,更多相关《8PSK通信系统的蒙特卡罗仿真分析.docx(14页珍藏版)》请在冰豆网上搜索。
8PSK通信系统的蒙特卡罗仿真分析
8PSK通信系统的蒙特卡罗仿真分析
一、设计原理
1.设计整体方案
根据题目要求和对设计原理的分析,设计的整体方案为:
首先,产生一个等概率且相互独立的二进制序列,将二进制序列通过串-并转换为一个三位码组。
通过调用Matlab系统函数,对输入信号进行调制和滤波,再送入信道传输,在在信道中对信号采用加性高斯白噪声进行干扰,然后进行解调,同时计数误比特和误符号数,并根据蒙特卡罗方法统计分析信号传输过程中由于噪声干扰作用下的误比特率和误符号率。
最后画出各种波形。
图18PSK通信系统的蒙特卡罗仿真分析
2.蒙特卡罗法的原理
蒙特卡罗法又称随机抽样或统计试验方法,属于计算数学的一个分支,它是在本世纪四十年代中期为了适应当时原子能事业的发展而发展起来的。
传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。
这也是我们采用该方法的原因。
蒙特卡罗方法的基本原理及思想如下:
当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。
这就是蒙特卡罗方法的基本思想。
蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。
它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题
的近似解。
二、详细设计步骤
根据整体设计方案,对各个设计模块进行具体设计。
设计步骤如下:
1.二进制序列的产生、串/并转换及二/十进制转换
二进制的产生即是本系统的信息源的产生,串/并转换和二/十进制转换以备在调制的时候数据调用。
在本系统中,首先,用Matlab库函数来直接产生一个串行二进制序列,并将其保存在一个向量中,以备函数调用;其次,将产生的串行二进制码转换成3行并行码,即是一个符号;再次,将二进制序列转换成十进制数(0、1、2、…、7);最后,调用Matlab绘图函数绘制等概率且相互独立的二进制序列波形。
模块程序如下:
%数据源的产生
x=round(rand(1,3*N));%产生独立串行随机二进制
fori=1:
N,
D
(1)=x(3*i-2);%D暂存二进制数以待转换
D
(2)=x(3*i-1);
D(3)=x(3*i);
d1(i)=D
(1);
d2(i)=D
(2);
d3(i)=D(3);
Bin2Dec(i)=bin2dec(num2str(D));%二十进制转换
end
%##################以下是画出独立随机二进制序列程序
fori=1:
length(x),%计算码元的值
if(x(i)==1),%如果信息为1
forj0=1:
grid0,%该码元对应的点值取1
y((i-1)*grid0+j0)=1;
end
else
forj0=1:
grid0,%反之,信息元为0,码元对应点值取0
y((i-1)*grid0+j0)=0;
end;end;
end
figure
(2);%图2
plot(y,'b');%画出独立随机二进制序列
title('信号源');
xlabel('X序列');
ylabel('Y序列');
axis([020000-0.52]);
2.8psk调制、滤波、添加加性高斯白噪声及相应波形产生
本系统中,首先,8psk调制、滤波通过调用Matlab库函数y=dmodce(x,Fd,Fs,method,…),从而在输出端输出8psk波形(眼图);其次,通过调用子函数产生高斯白噪声;最后,在加入高斯白噪声后,绘制受噪声干扰的星座图和眼图。
模块程序如下:
forSNR_db=0:
10:
20
N3=0.1*SNR_db;
Eb_N0=10^(SNR_db/10);
sgma=sqrt(1/(8*Eb_N0));%nc、ns的均方差
y0=dmodce(Bin2Dec,Fd,Fs,'psk',M);%8PSK调制
ynoise=sqrt(Fs/Fd)*sgma*(randn(length(y0),1)+j*randn(length(y0),1));%加加性高斯随机噪声
%z=ddemodce(ynoise,Fd,Fs,'psk',M);%8PSK解调
figure(N3+3);%循环画出不同加加性高斯随机噪声后的星座图
axis([-1.21.2-1.21.2]);
holdon;
fori=0:
M-1
plot(cos(2*pi*i/M),sin(2*pi*i/M),'.','MarkerSize',20);%产生星座图
end
plot(ynoise,'+');%画出加噪声后的星座图
title('加噪声后不同星座图');
holdon
forj1=1:
N
n1(N*N3+j1)=y0(j1);%存调制后的数据于n1
n2(N*N3+j1)=ynoise(j1);%存加噪声后的数据于n2
end%画出受到噪声干扰的信号向量;
end;
holdon
delay=3;%提升余弦滤波器的延时
rcv=rcosflt(n1,Fd,Fs,'fir/normal',.5,delay);
rcvy=rcosflt(n2,Fd,Fs,'fir/normal',.5,delay);
propdelay=delay.*Fs/Fd+1;%繁殖延时
rcv1=rcv(propdelay:
end-(propdelay-1),:
);
rcvy1=rcvy(propdelay:
end-(propdelay-1),:
);
N0=Fs/Fd;
offset1=0;%偏移值为2
h1=eyediagram(rcv1,N0,1/Fd,offset1);
set(h1,'Name','EyeDiagramDisplayedwithNoOffset');
title('加噪前的眼图');
h2=eyediagram(rcvy1,N0,1/Fd,offset1);
set(h2,'Name','EyeDiagramDisplayedwithNoOffset');
title('加噪后的眼图');
%#########以下是画出加加性高斯随机噪声的波形程序B=10*N;
fori=1:
B
n00(i)=10*gngauss(sgma);
end
figure(8);
holdon;
fori=1:
B
plot(n00);
end;
title('加性高斯随机噪声');
xlabel('时间——t');
ylabel('幅度——y');
axis([0B-2.52.5]);
3.加性高斯白噪声的产生及其波形的产生和绘制
本模块,调用一个子函数,产生均值为0,方差为1的高斯白噪声,并且绘出相应的高斯白噪声波形。
模块程序如下:
%##############以下是画出加加性高斯随机噪声的波形程序B=10*N
fori=1:
B
n00(i)=10*gngauss(sgma);
end
figure(8);
holdon;
fori=1:
B
plot(n00);
end;
title('加性高斯随机噪声');
xlabel('时间——t');
ylabel('幅度——y');
axis([0B-2.52.5]);
4.8PSK的解调
本模块是将加入加性高斯随机噪声的信号与可能发送的8种发射信号相位向量am(m=0,1,2,3,4,5,6,7)进行相关,再通过判决器取出相关值最大的那组am,作为检测器的输出信号,完成相干检测,将该信号进行并串变换,其结果与原信号d进行比较。
模块程序如下:
%信号映射
a000=[10];
a001=[cos(pi/4)sin(pi/4)];
a011=[01];
a010=[cos(3*pi/4)sin(3*pi/4)];
a110=[-10];
a111=[cos(5*pi/4)sin(5*pi/4)];
a101=[0-1];
a100=[cos(7*pi/4)sin(7*pi/4)];
fori=1:
N,
n
(1)=gngauss(sgma);
n
(2)=gngauss(sgma);%存高斯白噪声数据于n中
if((d1(i)==0)&(d2(i)==0)&(d3(i)==0)),%加噪声
r=a000+n;
elseif((d1(i)==0)&(d2(i)==0)&(d3(i)==1)),
r=a001+n;
elseif((d1(i)==0)&(d2(i)==1)&(d3(i)==0)),
r=a010+n;
elseif((d1(i)==0)&(d2(i)==1)&(d3(i)==1)),
r=a011+n;
elseif((d1(i)==1)&(d2(i)==0)&(d3(i)==0)),
r=a100+n;
elseif((d1(i)==1)&(d2(i)==0)&(d3(i)==1)),
r=a101+n;
elseif((d1(i)==1)&(d2(i)==1)&(d3(i)==0)),
r=a110+n;
else
r=a111+n;
end;
%对应相关函数
c000=dot(r,a000);c001=dot(r,a001);
c010=dot(r,a010);c011=dot(r,a011);
c100=dot(r,a100);c101=dot(r,a101);
c110=dot(r,a110);c111=dot(r,a111);
c_max=max([c000c001c010c011c100c101c110c111]);%判决器取出相关值最大,作为检测器的输出信号
if(c000==c_max),de1=0;de2=0;de3=0;%将该信号进行并串变换
elseif(c001==c_max),de1=0;de2=0;de3=1;
elseif(c010==c_max),de1=0;de2=1;de3=0;
elseif(c011==c_max),de1=0;de2=1;de3=1;
elseif(c100==c_max),de1=1;de2=0;de3=0;
elseif(c101==c_max),de1=1;de2=0;de3=1;
elseif(c110==c_max),de1=1;de2=1;de3=0;
elsede1=1;de2=1;de3=1;
end;
5.蒙特卡罗分析
本模块完成对加高斯白噪声后的误码和误符号的概率计算,以及绘制出相应的蒙特卡罗分析图。
首先,是检测加高斯白噪声后的对应码元是否错误,如果出错,则误码和误符号计数加1,算出总共的误码数和误符号数;然后,由误码数和误符号数计算出误码率和误符号率;最后,绘出8PSK的蒙特卡洛图。
模块程序如下:
fork=1:
length(SNRindB1),
snr=10^(SNRindB1(k)/10);%信噪比
sgma=sqrt(E/(3*2*snr));%%噪声标准均方差
numofsymbolerror=0;%无符号率计数初值
numofbiterror=0;%无码率计数初值
symbolerror=0;%误码标志
if(de1~=d1(i)),
numofbiterror=numofbiterror+1;%有误码则加一
symbolerror=1;%置误码标志
end;
if(de2~=d2(i)),
numofbiterror=numofbiterror+1;
symbolerror=1;
end;
if(de3~=d3(i)),
numofbiterror=numofbiterror+1;
symbolerror=1;
end;
if(symbolerror==1),
numofsymbolerror=numofsymbolerror+1;
end;
end;
ps=numofsymbolerror/N;%计算误码率
pb=numofbiterror/(3*N);%计算误符号率
smld_symbol_err_prb(k)=ps;%将误码率值存入向量smld_symbol_err_prb中
smld_bit_err_prb(k)=pb;%将误符号率值存入向量smld_bit_err_prb中
end;
%##############以下是画出理论误码率,误比特率和误符号率的程序
fori=1:
length(SNRindB2),
SNR=exp(SNRindB2(i)*log(10)/10);%对数转换%信噪比
theo_err_prb(i)=2*Qfunct(sqrt(6*SNR)*sin(pi/8))/3;%理论比特误码率
end;
figure(6);
semilogy(SNRindB1,smld_bit_err_prb,'*');%“*”画出误b比特率对应曲线
holdon
semilogy(SNRindB1,smld_symbol_err_prb,'O');%“o”画出误符号率对应曲线
semilogy(SNRindB2,theo_err_prb);%“—”画出理论比误码率曲线
axis([0,10,10^(-5),10^0]);%设置横纵轴间距大小
grid
xlabel('Eb/NoindB')%x轴名称
ylabel('errorprobability')%y轴名称
title('8PSK的蒙特卡洛图')
三、设计结果及分析
1.通过对二进制序列产生、串/并转换及二/十进制转换模块程序的调试绘出波形如图2:
图2等概率且相互独立的二进制波形
2.通过调试绘制出调制输出的8psk波形(如图3)、加高斯白噪声前的眼图(如图4)、加高斯白噪声后的眼图(如图5)以及加高斯白噪声后的星座图(如图6):
图3调制后输出8PSK波形
图4加高斯白噪声前的眼图
图5加高斯白噪声后的眼图
图6加高斯白噪声后的星座图
3.通过对加性高斯白噪声的产生及其波形的产生和绘制模块程序的调试,绘出高斯随机噪声的波形如图6.
图7加性高斯随机噪声波形
4.通过对8psk蒙特卡罗分析模块程序的调试得到波形如图7.
图88PSK的蒙特卡罗图
经过对系统设计的分析,程序设计和调试,得到了正确的结果。
本设计以产生一个等概率且相互独立的二进制序列,经串并变换形成三路并行的二进制符号,三路二进制符号经过8PSK调制,映射为相应的二维相位向量,与干扰噪声向量叠加后,形成受污染的接收信号,输出的接收信号以向量的形式表达,在检测器中与可能发送的8种发射信号相位向量an(n=0,1,2,3,4,5,6,7)进行相关,判决器取出相关值最大的那组an,作为检测器的输出信号,完成相干检测,将该信号进行并串变换,其结果与原信号d进行比较。
如果进行N次试验,符号不一致的次数计数为M,则符号错误概率Ps的估值为M/N。
对8PSK系统,如果发送N个符号,相当于发送了3N个比特。
总的比特错误次数计数为M′,则比特误码率Pb的估值为M′/2N。
最后通过图形进行形象的分析误比特率和误符号率。