欢迎来到天天文库
浏览记录
ID:872457
大小:704.03 KB
页数:24页
时间:2017-09-22
《基于matlab的通信系统仿真》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于MATLAB的通信系统仿真――数字通信大作业目录基于Matlab的通信系统仿真3――数字通信大作业3系统综述3结构框图3系统实现4随机信号的生成4星座图映射4插值6波形成形(平方根升余弦滤波器)710倍载波调制8加入高斯白噪声11匹配滤波器12采样15判决解调16误码率曲线17整体程序构架19讨论21信噪比修正21仿真曲线21仿真终止条件22升余弦滤波器22图表图1待构建系统的框图3图20、1等概分布的随机信号波形图4图316QAM星座图5图4经过插值后的两路信号波形图6图5平方根升余弦滤波器的冲激响应曲线7图6通过平方根升余弦滤波器后的两路信号8图7载波调制信号展开图9图8载波调制信
2、号整体图10图9加入高斯白噪声的两路信号波形11图10经过匹配滤波器后的波形13图11高斯白噪声经过匹配滤波器后的波形14图12信噪比为10db时的星座图15图13误码率曲线图18图143条曲线比较20基于Matlab的通信系统仿真――数字通信大作业系统综述利用Matlab仿真软件,完成如图1所示的一个基本的数字通信系统。信号源产生0、1等概分布的随机信号,映射到16QAM的星座图上,同时一路信号已经被分成了实部和虚部,后边的处理建立在这两路信号的基础上。实部、虚部信号分别经过平方根升余弦滤波器,再加入高斯白噪声,然后通过匹配滤波器(平方根升余弦滤波器)。最后经过采样,判决,得到0、1信号
3、,同原信号进行比较,给出16QAM数字系统的误码。结构框图图1待构建系统的框图系统实现随机信号的生成利用Matlab中自带的函数randsrc来产生0、1等概分布的随机信号。源代码如下所示:%====定义待仿真序列的维数NglobalNN=320;%====定义产生‘1’的概率为pglobalpp=0.5;%==============================%首先产生随机二进制序列source=randsrc(1,N,[1,0;p,1-p]);0、1等概分布的随机信号如图2所示。图20、1等概分布的随机信号波形图星座图映射将等概分布的0、1信号映射到16QAM星座图上。每四个bi
4、t构成一个码子,具体实现的方法是,将输入的信号进行串并转换分成两路,分别叫做I路和Q路。再把每一路的信号分别按照两位格雷码的规则进行映射,这样实际上最终得到了四位格雷码。为了清楚说明,参看表1:表1两位格雷码的映射规律两位0、1码映射后(按格雷码)00-301-1111103源代码如下所示:function[y1,y2]=Qam_modulation(x)%QAM_modulation%==============================%对产生的二进制序列进行QAM调制%=====首先进行串并转换,将原二进制序列转换成两路信号N=length(x);a=1:2:N;y1=x(a)
5、;y2=x(a+1);%=====分别对两路信号进行QPSK调制%======对两路信号分别进行2-4电平变换a=1:2:N/2;temp1=y1(a);temp2=y1(a+1);y11=temp1*2+temp2;temp1=y2(a);temp2=y2(a+1);y22=temp1*2+temp2;%=======对两路信号分别进行相位调制a=1:N/4;y1=(y11*2-1-4)*1.*cos(2*pi*a);y2=(y22*2-1-4)*1.*cos(2*pi*a);%========按照格雷码的规则进行映射y1(find(y11==0))=-3;y1(find(y11==1)
6、)=-1;y1(find(y11==3))=1;y1(find(y11==2))=3;y2(find(y22==0))=-3;y2(find(y22==1))=-1;y2(find(y22==3))=1;y2(find(y22==2))=3;得到的星座图如图3所示,图上注明了每一个点对应的01序列。图316QAM星座图从上边的星座图上可以清楚的看到,任意相邻的两个点之间它们对应的4个bit中只有一个有差别,也就是格雷码的特点。而采用格雷码主要目的是当信噪比较大时,也就是系统的误码率比较低的情况下,当出现一个符号错误的情况下,往往只是这个符号中的一个bit位出现了误码,因此这个情况下误码率和
7、误bit率是4:1,这一特性在后边的误码率计算的过程中会有应用。插值为了能够模拟高斯白噪声的宽频谱特性,以及为了能够显示波形生成器(平方根升余弦滤波器)的效果,所以在原始信号中间添加一些0点。具体实现是分别在信号的I路和Q路中,任意相邻的两个码字之间添加7个0。源代码如下所示:functiony=insert_value(x,ratio)%===============================%x是待插值的序列,
此文档下载收益归作者所有