通信系统仿真上机实验指导书..pdf
《通信系统仿真上机实验指导书..pdf》由会员分享,可在线阅读,更多相关《通信系统仿真上机实验指导书..pdf(50页珍藏版)》请在三一文库上搜索。
1、1 通信系统仿真上机实验指导书 指导教师:刘健 2013 年 10 月 2 最终报告内容: 根据提供的例子,学习通信系统仿真基本知识,搭建包含:随机数生成、调 制、编码、 AWGN 信道、解码、解调、差错统计等模块的通信系统仿真M 文件 或是 Simulink 仿真模型, 最终得出评估通信系统性能的SNR/BER 曲线、频谱利 用率等曲线。 3 目录 目录. 1 设计一 随机信号分析 . 4 设计二 模拟信号的数字化 . 8 设计三 数字基带传输系统 . 14 设计四 模拟线性调制解调系统 . 18 设计五 2FSK 调制解调系统 26 设计六 2PSK 和 2DPSK 调制解调系统 32 设
2、计七 数字通信系统的抗噪性能分析. 37 设计八 载波同步 . 43 设计九 信道编码和译码 . 46 参考文献 . 50 4 设计一随机信号分析 一、设计目的 1 利用 MATLAB产生各种随机信号。 2 利用 MATLAB计算随机信号的自相关函数和功率谱密度。 3 掌握随机信号的自相关函数与功率谱密度的关系及其推导。 二、设计原理 1随机信号的产生 在 MA TLAB 中,提供了大量的随机数发生函数,其中rand 和 randn 是两类核心函数, rand 函数产生在 0,1区间服从均匀分布的随机信号;randn 函数产生服从均值为0,方差为 1 的高斯分布的随机信号。其它类型的随机信号可
3、以通过这两类随机信号变换而得到。 (1) rand 函数 格式: X=rand(N) X=rand(M,N) (2) randn 函数 格式: X=randn(N) X=randn(M,N) 2 随机信号的自相关函数 在 MA TLAB 中, xcorr 函数用于估计随机序列的自相关函数,其调用格式如下: (1) c=xcorr(x) 可计算出矢量x的自相关函数,矢量x表示序列)(nx。 (2) c=xcorr(x,option) 中的 option 可用来指定相关选项: 当 option=biased 时, xcorr 函数可计算自相关函数的有偏估计,即 1 0 1 )( mN n nmnx
4、 xx N mR 当 option=unbiased 时, xcorr 函数可计算自相关函数的无偏估计,即 1 0 1 )( mN n nmnx xx mN mR 当 option=coeff 时, xcorr 函数对序列进行归一化处理,使零滞后的自相关函数为1.0, 即0m的自相关函数值归一化为1。 当 option=none 时,即为缺省情况,不做归一化处理。 5 3 随机信号的功率谱密度 随机信号)(t的自相关函数与其功率谱密度之间互为傅立叶变换关系。即 deRP j )()( dePR j )( 2 1 )( 【例 1-1】在( -1/2,1/2)内产生一均匀分布的随机数N=1000
5、的离散时间序列,计算该 序列的自相关,定义为 MmXX mN mR mn mN n nx ,.,1 , 0, 1 )( 1 MmXX mN mn N mn n ,.,2, 1, 1 同时,用计算)(mRx的离散傅里叶变换(DFT)求序列 n x的功率谱。 DFT 定义为 M Mm Mfmj xx emRmRDFT 122 )()( 解 产生序列 n x,计算自相关和功率谱)(mRDFT x 的 MATLAB源程序在下面给出。 应该值得注意的是,自相关函数和功率谱都呈现出显著的波动,因此有必要在几次实现上对 样本的自相关求平均。本程序在随机过程的10 次实现上采用平均自相关得到自相关函数和 功率
6、谱。源程序如下: echo on N=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); for j=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; % 自相关函数之和 6 Sx_av=Sx_av+Sx; % 功率谱密度之和 end; Rx_av=Rx_
7、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); for m=1:M+1 for n=1:N-m+1
8、Rx(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已知瑞利分布随机信号的概率密度函数为 0 x0 0) 2 exp( )( 2 2 2 x xx xf 用 randn 函数产生2 2 的瑞利分布随机变量。 提示: 两个独立分布、均值为0、方差为 2 的高斯随机变量的平方和开根号所得的随机 变量服从功率为 2 2的瑞利分布。 2产生均值为0,方差为1 的高斯随机信号,长度为0.5s,计算该信号的自相关函数, 并绘制高斯信号及自相关函数的图形。
9、提示: 计算机只能产生各种离散信号序列,对于模拟连续信号,本质上都是产生信号的 采样序列。只要采样频率足够高,模拟就可以非常准确。在这里,假定信号的采样频率 1000 s fHz。 3在( -1,1)内产生一均匀分布的随机数N=500 的离散时间序列,计算该序列的自相 关函数和功率谱密度,并绘制图形。 4一个带限随机过程)(tX的功率谱为 0 2 () 0 NfB P f fB 计算它的自相关函数,并绘制自相关函数与功率谱密度的图形。 提示:)(tX的自相关函数)2( 2 )( 0 20 BBSaNdfe N R ftj B B x 。 8 设计二模拟信号的数字化 一、设计目的 1掌握脉冲编码
10、调制的基本原理。 2理解均匀PCM 与非均匀 PCM 。 3利用 MATLAB对抽样值进行A 律 13 折线编码。 二、设计原理 在模拟信号数字化方式中,出现最早且应用最广泛的是脉冲编码调制,即PCM 编码, 它经过抽样(时间离散化)、量化(幅值离散化)和编码(多电平转换为二电平)3 个步骤, 将一个时间和幅值都连续变换的模拟信号变成二进制数字信号。 1抽样 抽样是将模拟信号在时间上离散化。对于低通型信号,当抽样频率 Hs ff2时,属于正 常抽样,不会发生频谱混叠;当 Hs ff2时,属于欠抽样,已抽样信号频谱发生混叠。下面 通过举例来看如何利用MATLAB分析已抽样信号的频谱。 【例 2-
11、1】有一信号)200(50)( 2 tSatm,当抽样频率 1s f=100Hz 时,绘出原始信号和 抽样后信号的波形及其频谱。 解由题意可知,原始信号的最高频率 H f64Hz,因此用 1s f=100Hz 抽样时,会发生 频谱混叠, MATLAB实现的源程序如下: clear t0=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);
12、w=t0/(2*ts)+1; % 确定 t=0 的点 m(w)=1; % 确定 t=0 的点对应的信号值为1 m=m.*m; m=50.*m; M,mn,dfy=fftseq(m,ts,df); % 傅里叶变换 M=M/fs; 9 f=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(
13、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
14、) 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) 欠抽样信号的频谱); %- function M,m,df=fftseq(m,ts,df) 10 fs=1/ts; if nargin=2 % 判断输入参数的个数是否符合要求 n
15、1=0; else n1=fs/df; % 根据参数个数决定是否使用频率缩放 end n2=length(m); n=2(max(nextpow2(n1),nextpow2(n2); M=fft(m,n); % 进行离散傅里叶变换 m=m,zeros(1,n-n2); df=fs/n; 程序运行结果如图2.1 所示。 -0.1-0.0500.050.1 0 10 20 30 40 50 (a) 原 始 信 号 的 时 域 波 形 -5000500 0 0.5 1 (b) 原 始 信 号 的 频 谱 -0.1-0.0500.050.1 0 10 20 30 40 50 (c) 欠 抽 样 信 号
16、 的 时 域 波 形 -5000500 0 0.2 0.4 0.6 0.8 1 (d) 欠 抽 样 信 号 的 频 谱 图 2.1 例 2-1 运行结果 2量化 在 MATLAB中, quantiz 函数可以实现信号的均匀量化,compand 函数可以实现信号的 压缩与扩张,二者结合起来,可以实现信号的非均匀量化。它们的调用格式如下。 (1) quantiz 函数 index=quantiz(sig,partition) ,参数 sig 表示输入信号,参数 partition 表示分区向量, 分 区向量给出了量化间隔端点的向量,长度为1M, 将信号分成M个区域。根据向量partition 对输
17、入信号sig 产生量化索引index,index 的长度与矢量sig 的长度相同。向量partition 是由 11 若干个边界判断点且各边界点的大小严格按升序排列组成的实矢量。若partition 的矢量长度 小于1M,则索引向量index 中的每个元素的大小为0,1M范围内的一个整数。量化 方法如下: 当 sigpartition(1) 时,输出0; 当 partition(i)partition( 1M )时,输出 1M 。 index,quants=quantiz(sig,partition,codebook),参数codebook 表示码本向量,存放每 个 partition 的量化
18、值。根据码本codebook 产生量化索引index 和信号的量化值quants。如果 partition 的矢量长度为1M,那么 codebook 的矢量长度为M。 index,quants,distor=quantiz(sig,partition,codebook),产生量化索引index、信号的量化 值 quants 和量化误差distor。 (2) compand 函数 out=compand(in,Mu,v,mu/compressor) ,对输入向量in 进行律压缩, Mu 为压缩参 数, v 为输入信号的峰值。 out=compand(in,Mu,v,mu/expander) ,对
19、输入向量in 进行律扩张。 out=compand(in,A,v,A/compressor) ,对输入向量in 进行 A 律压缩, A 为压缩参数, v 为输入信号的峰值。 out=compand(in,A,v,A/expander) ,对输入向量in 进行 A 律扩张。 【例 2-2】比较均匀量化与非均匀量化的量化误差。 解在计算均匀量化的量化误差时,直接调用quantiz 函数求解;在计算非均匀量化的 量化误差时,先对原始信号进行压缩,再进行均匀量化,最后把经过扩张得到的恢复信号与 与原始信号比较,计算其量化误差。源程序如下: Mu=255; % 定义压缩参数 t=-4:0.1:4; %
20、定义时间序列 sig=exp(t); % 定义原始信号 v=max(sig); % 原始信号的最大幅值 index1,quants1,distor1=quantiz(sig,0:floor(v),0:ceil(v); % 对原始信号进行均匀量化 compsig=compand(sig,Mu,v,mu/compressor); % 对原始信号进行压缩 index,quants=quantiz(compsig,0:floor(v),0:ceil(v); % 对压缩信号进行均匀量化 newsig=compand(quants,Mu,max(quants),mu/expander); % 对非均匀量化
21、信号扩张 distor2=sum(newsig-sig).2)/length(sig); % 非均匀量化的量化误差 distor1 distor2 程序运行结果为 12 distor1 = 0.5348 distor2 = 0.0397 3A 律 13 折线编码 下面将通过MA TLAB 程序实现A律 13 折线编码,并输出8 位码。 【例 2-3】设输入信号抽样值为+1270 个量化单位,按照A律 13 折线特性编成8 位码。 解按照A律 13 折线的编码规则,用MATLAB实现的源程序如下: clear all x=+1270; if x0 out(1)=1; else out(1)=0;
22、 end if abs(x)=0 else tmp=floor(abs(x)-st)/step); t=dec2bin(tmp,4)-48; %函数 dec2bin 输出的是ASICC 字符串, 48 对应 0 out(5:8)=t(1:4); end out=reshape(out,1,8) 程序运行结果为 out = 1 1 1 1 0 0 1 1 三、设计内容 1原始信号为( )sin 2002cos100m ttt,现分别用3 种频率对其进行抽样, 1s f=100Hz, 2s f=200Hz, 3s f=300Hz,绘出原始信号和抽样后信号的波形及其频谱。 2利用 MATLAB中的
23、Simulink 模块进行抽样与恢复过程的仿真,当输入信号为一频率 为 10Hz 的正弦波时,观察对于同一输入信号有不同输入频率时,已抽样信号及恢复信号的 不同形态。 提示:仿真中用到的主要模块有“Sine Wave” 模块、 “Pulse Generator” 模块、 “Analog Filter Design”模块和“ Gain”模块。 3对一个正弦信号( )sinm tt进行均匀量化,在图上同时显示出原始信号和量化后信 号,当增大量化级时,观察量化级与量化误差之间的关系。 4量化间隔端点的向量partition 取值为 0、1、3,每个区间的取值为-1、0.5、2、3,输 入量化的离散信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 系统 仿真 上机 实验 指导书
链接地址:https://www.31doc.com/p-5165763.html