1通信系统仿真上机实验指导书指导教师:刘健2013年10月2最终报告内容:根据提供的例子,学习通信系统仿真基本知识,搭建包含:随机数生成、调制、编码、AWGN信道、解码、解调、差错统计等模块的通信系统仿真M文件或是Simulink仿真模型,最终得出评估通信系统性能的SNR/BER曲线、频谱利用率等曲线。3目录目录.................................................................................................................................1设计一随机信号分析...................................................................................................4设计二模拟信号的数字化...........................................................................................8设计三数字基带传输系统.........................................................................................14设计四模拟线性调制解调系统.................................................................................18设计五2FSK调制解调系统......................................................................................26设计六2PSK和2DPSK调制解调系统....................................................................32设计七数字通信系统的抗噪性能分析.....................................................................37设计八载波同步.........................................................................................................43设计九信道编码和译码.............................................................................................46参考文献.......................................................................................................................504设计一随机信号分析一、设计目的1.利用MATLAB产生各种随机信号。2.利用MATLAB计算随机信号的自相关函数和功率谱密度。3.掌握随机信号的自相关函数与功率谱密度的关系及其推导。二、设计原理1.随机信号的产生在MATLAB中,提供了大量的随机数发生函数,其中rand和randn是两类核心函数,rand函数产生在[0,1]区间服从均匀分布的随机信号;randn函数产生服从均值为0,方差为1的高斯分布的随机信号。其它类型的随机信号可以通过这两类随机信号变换而得到。(1)rand函数格式:X=rand(N)X=rand(M,N)(2)randn函数格式:X=randn(N)X=randn(M,N)2.随机信号的自相关函数在MATLAB中,xcorr函数用于估计随机序列的自相关函数,其调用格式如下:(1)c=xcorr(x)可计算出矢量x的自相关函数,矢量x表示序列)(nx。(2)c=xcorr(x,'option')中的option可用来指定相关选项:·当option=biased时,xcorr函数可计算自相关函数的有偏估计,即101)(mNnnmnxxxNmR·当option=unbiased时,xcorr函数可计算自相关函数的无偏估计,即101)(mNnnmnxxxmNmR·当option=coeff时,xcorr函数对序列进行归一化处理,使零滞后的自相关函数为1.0,即0m的自相关函数值归一化为1。·当option=none时,即为缺省情况,不做归一化处理。53.随机信号的功率谱密度随机信号)(t的自相关函数与其功率谱密度之间互为傅立叶变换关系。即deRPj)()(dePRj)(21)(【例1-1】在(-1/2,1/2)内产生一均匀分布的随机数N=1000的离散时间序列,计算该序列的自相关,定义为MmXXmNmRmnmNnnx,...,1,0,1)(1MmXXmNmnNmnn,...,2,1,1同时,用计算)(mRx的离散傅里叶变换(DFT)求序列{nx}的功率谱。DFT定义为MMmMfmjxxemRmRDFT122)()(解产生序列{nx},计算自相关和功率谱)(mRDFTx的MATLAB源程序在下面给出。应该值得注意的是,自相关函数和功率谱都呈现出显著的波动,因此有必要在几次实现上对样本的自相关求平均。本程序在随机过程的10次实现上采用平均自相关得到自相关函数和功率谱。源程序如下:echoonN=1000;M=50;t=0:1:50;s=-0.5:0.02:0.5;Rx_av=zeros(1,M+1);Sx_av=zeros(1,M+1);forj=1:10;%取10次实现的整体平均X=rand(1,N)-1/2;%X在-1/2和1/2之间取值Rx=Rx_est(X,M);%本次实现的自相关函数Sx=fftshift(abs(fft(Rx)));%本次实现的功率谱密度Rx_av=Rx_av+Rx;%自相关函数之和6Sx_av=Sx_av+Sx;%功率谱密度之和end;Rx_av=Rx_av/10;%自相关函数的整体平均Sx_av=Sx_av/10;%功率谱密度的整体平均subplot(2,1,1);plot(t,Rx_av)xlabel('(a)自相关函数');subplot(2,1,2);plot(s,Sx_av)xlabel('(b)功率谱密度');%--------------------------------------------------------------------------------------------------------------function[Rx]=Rx_est(X,M)%估计随机序列X的自相关函数%计算出Rx(0),Rx(1),...,Rx(M)%Rx(m)代表实际中的Rx(m-1).N=length(X);Rx=zeros(1,M+1);form=1:M+1forn=1:N-m+1Rx(m)=Rx(m)+X(n)*X(n+m-1);end;Rx(m)=Rx(m)/(N-m+1);end;程序运行结果如图1.1所示。7图1.1例1-1的运行结果三、设计内容1.已知瑞利分布随机信号的概率密度函数为0x00)2exp()(222xxxxf用randn函数产生22的瑞利分布随机变量。提示:两个独立分布、均值为0、方差为2的高斯随机变量的平方和开根号所得的随机变量服从功率为22的瑞利分布。2.产生均值为0,方差为1的高斯随机信号,长度为0.5s,计算该信号的自相关函数,并绘制高斯信号及自相关函数的图形。提示:计算机只能产生各种离散信号序列,对于模拟连续信号,本质上都是产生信号的采样序列。只要采样频率足够高,模拟就可以非常准确。在这里,假定信号的采样频率1000sfHz。3.在(-1,1)内产生一均匀分布的随机数N=500的离散时间序列,计算该序列的自相关函数和功率谱密度,并绘制图形。4.一个带限随机过程)(tX的功率谱为02()0NfBPffB 计算它的自相关函数,并绘制自相关函数与功率谱密度的图形。提示:)(tX的自相关函数)2(2)(020BBSaNdfeNRftjBBx。8设计二模拟信号的数字化一、设计目的1.掌握脉冲编码调制的基本原理。2.理解均匀PCM与非均匀PCM。3.利用MATLAB对抽样值进行A律13折线编码。二、设计原理在模拟信号数字化方式中,出现最早且应用最广泛的是脉冲编码调制,即PCM编码,它经过抽样(时间离散化)、量化(幅值离散化)和编码(多电平转换为二电平)3个步骤,将一个时间和幅值都连续变换的模拟信号变成二进制数字信号。1.抽样抽样是将模拟信号在时间上离散化。对于低通型信号,当抽样频率Hsff2时,属于正常抽样,不会发生频谱混叠;当Hsff2时,属于欠抽样,已抽样信号频谱发生混叠。下面通过举例来看如何利用MATLAB分析已抽样信号的频谱。【例2-1】有一信号)200(50)(2tSatm,当抽样频率1sf=100Hz时,绘出原始信号和抽样后信号的波形及其频谱。解由题意可知,原始信号的最高频率Hf64Hz,因此用1sf=100Hz抽样时,会发生频谱混叠,MATLAB实现的源程序如下:cleart0=10;%定义时间长度ts=0.001;%抽样周期ts1=0.01;%欠抽样周期fs=1/ts;fs1=1/ts1;%抽样频率df=0.5;%定义频率分辨力t=[-t0/2:ts:t0/2];%定义时间序列x=sin(200*t);%定义信号序列m=x./(200*t);w=t0/(2*ts)+1;%确定t=0的点m(w)=1;%确定t=0的点对应的信号值为1m=m.*m;m=50.*m;[M,mn,dfy]=fftseq(m,ts,df);%傅里叶变换M=M/fs;9f=[0:dfy:dfy*length(mn)-dfy]-fs/2;%定义频率序列%欠抽样过程t1=[-t0/2:ts1:t0/2];%定义抽样时间序列x1=sin(200*t1);%计算对应抽样序列的信号序列m1=x1./(200*t1);%计算Sa函数序列w1=t0/(2*ts1)+1;%由于除0产生了错误值,计算该值的标号m1(w1)=1;%将错误值修正m1=m1.*m1;m1=50.*m1;[M1,mn1,df1]=fftseq(m1,ts1,df);%对已抽样信号进行傅里叶变换M1=M1/fs1;%将一个周期的图像扩展到多个周期N1=[M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1];f1=[-7*df1*length(mn1):df1:6*df1*length(mn1)-df1]-fs1/2;%绘图subplot(2,2,1)plot(t,m)axis([-0.15,0.15,-1,50]);xlabel('(a)原始信号的时域波形');subplot(2,2,2)plot(f,abs(fftshift(M)));axis([-500,500,0,1]);xlabel('(b)原始信号的频谱');subplot(2,2,3)stem(t1,m1)axis([-0.15,0.15,-1,50]);xlabel('(c)欠抽样信号的时域波形');subplot(2,2,4)plot(f1,abs(fftshift(N1)));axis([-500,500,0,1]);xlabel('(d)欠抽样信号的频谱');%--------------------------------------------------------------