频分多路复用系统设计
*****************
实践教学
*******************
兰州理工大学
计算机与通信学院 2015 年春季学期
信号处理
课程设计
题
目:频分多路复用系统的设计 通信工程
专业班级: 姓 学 名: 号:
指导教师: 成 绩:
摘
要
频分复用是一种用频率来划分信道的复用方式。在 FDM 中,信道的带宽被划分成很多 个互不重叠的频率段(子通道),每路信号占据其中一个字信道,并且各路之间必须留有 未被占用的频段(防护频带)进行隔离,以防止信号重叠。在接收端,采用适当的带通滤 波器将多路信号分开,从而恢复出来所需要的信号。 本次以“频分多路复用系统的防真设计”为题目的《信号处理》课程设计,在 MATLAB 仿真环境为基础, 利用 STMULINK 仿真工具, 根据频分复用的原理, 仿真频分多路复用系统。 并设计必要的带通滤波器。低通滤波器,从复用信号中恢复所采集的语音信号。最后通过 系统的仿真波形图对系统进行分析。 通过本次《信号处理》课程设计,再次熟悉了频分复用的相关理论知识,对如何通过 SIMULINK 仿真工具进行系统仿真也有了更清晰的认识和掌握。
关键词:频分复用;FFT;Matlab;频谱分析
目录
前 言 ............................................................................................................................. 1 一、概述 ....................................................................................................................... 2 二、基本原理 ............................................................................................................... 3 3.1 语音信号采样 .................................................................................................. 6 3.2 语音信号的调制 .............................................................................................. 7 3.3 滤波器的设计 ................................................................................................... 8 3.4 信道噪声 ........................................................................................................ 10 四、仿真及实验分析 ................................................................................................. 12 4.1 设计流程图 .................................................................................................... 12 4.2 语音信号的时域和频域仿真 ........................................................................ 12 4.2.1 信号的时域仿真 ................................................................................. 12 4.2.2 信号频域仿真 ...................................................................................... 13 4.3 复用信号的频谱仿真 .................................................................................... 13 4.4 传输信号的仿真
............................................................................................. 14 4.5 解调信号的频谱仿真 .................................................................................... 15 4.6 恢复信号的时域与频域仿真 ......................................................................... 16 五、总 结 ................................................................................................................. 18 致 谢 ........................................................................................................................... 19 参考文献 ..................................................................................................................... 20 附 录 ......................................................................................................................... 21
前 言
依据频分复用的复用原理运用 MATLAB 仿真软件采集 4 路语音信号通过合适的高频载 波调制,然后设计必要的带通滤波器和低通滤波器把得到的复用信号恢复成所采样的语音 信号。在整个设计过程中运用 MATLAB 仿真软件进行仿真,对采样的语音信号进行频域和时 域的分析。通过本次设计可以加深我们 FDMA 系统的认识和掌握学会对信道噪声的干扰进行 分析和消除,同时学会 MATLAB 软件的基本使用及对软件的设计和仿真掌握低通和带通滤波 器的设计。在低通滤波阶段,得到的恢复信号与原始信号基本一致,但是频谱在 0Hz 附近 有所失真,这是由于频谱混叠所致,各信号频谱混叠部分均为高频部分,即频率最高的区 域,引起高频部分失真,这是因为传输期间引入频率高于模拟信号的噪声,所以如果在完 全无噪声的环境中进行传输,可得无失真的恢复信号。仿真结果分析表明,信号在频分复 用时还存在着频间干扰的问题,对此,采用了适当加大保护频带的方法,在较大程度上使 该问题得以解决,至于完全消除频谱间的干扰,还有待进一步研究与完善。
1
一、概述
1.1 研究背景和意义
要求学生独立应用所学知识,对通信系统中的典型部件电路进行方案设计、分析制作 与调测电路。通过本专题设计,掌握频分复用的原理,熟悉简单复用系统的设计方法。 频分复用要求总频率宽度大于各个子信道频率之和,同时为了保证各子信道中所传输 的信号互不干扰,应在各子信道之间设立隔离带,这样就保证了各路信号互不干扰。频分 复用是通信中广泛使用的一种通信方式。频分复用技术可以使不同的用户分配在时隙相同 而频率不同的信道上传输。本次课程设计要求设计三路频分复用系统。通过这次课程设计 欲达到以下目的:巩固课程所学的有关理论知识;加深对频分复用系统的理解和掌握;掌
握带通滤波器和低通滤波器的设计;掌握 MATLAB 软件的基本使用;学会使用 MATLAB 软件 进行一些仿真和设计。
1.2 MATLAB 简介
MATLAB (矩阵实验室) 是 MATrix LABoratory 的缩写, 是一款由美国 The MathWorks 公司出品的商业数学软件。MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值 计算的高级技术计算语言和交互式环境。 除了矩阵运算、 绘制函数/数据图像等常用功能外, MATLAB 还可以用来创建用户界面及与调用其它语言(包括 C,C++和 FORTRAN)编写的 程序。 尽管 MATLAB 主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合 不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分 析等。另外还有一个配套软件包 Simulink,提供了一个可视化开发环境,常用于系统模拟、 动态/嵌入式系统开发等方面。
2
二、基本原理
传统的频分复用典型的应用莫过于广电 HFC 网络电视信号的传输了,不管是模拟电视 信号还是数字电视信号都是如此,因为对于数字电视信号而言,尽管在每一个频道(8MHz) 以内是时分复用传输的,但各个频道之间仍然是以频分复用的方式传输的。 频分多址(FDMA)是使用最早、目前使用较多的一种多址接入方式,广泛应用于卫 星通信、移动通信、一点多址微波通信系统中。 FDMA 通信系统核心的思想是频分复用(FDM),复用是一种将若干个彼此独立的信 号合并为一个可在同一个信道上传送的复合信号的方法。例如,在电话通信系统中,语音 信号频谱在 300—3400Hz 内,而一条干线的通信资源往往远大于传送一路语音信号所需的 带宽。这时,如果用一条干线只传一路语音信号会使资源大大的浪费,所以常用的方法是 “复用”,使一条干线上同时传输几路电话信号,提高资源利用率。 频分复用(FDM)是信道复用按频率区分信号,即将信号资源划分为多个子频带,每 个子频带占用不同的频率,如图(1)所示。然后把需要在同一信道上同时传输的多个信号 的频谱调制到不同的频带上,合并在一起不会相互影响,并且能再接收端彼此分离开。 频分复用的关键技术是频谱搬移技术,该技术是用混频来实现的。混频的原理,如图 (2)所示。 混频过程的时域表示式为:
s (t ) x(t ) cos(2f 0t )
(1)
图 1 频分复用的子频带划分
其双边带频谱结构如图(3)所示。其中,下边带也称为反转边带,从低到高的频率分
3
量是基带频率分量的翻转,双边带频谱经过低通滤波就可以得到下边带;上边带也称为正 立边带,从低到高频率分量与基带频率分量一致,双边带频谱经过高通滤波就可
以得到上 边带。
图 2 混频原理
图 3 双边带频谱结构
从图(3)可以看出上、下边带所包含的信息相同,所以恢复原始数据信息只要上边带 和下边带的其中之一即可。另外,混频器本身不是线性设备。线性设备的输出与输入信号 具有相同的频率成分,只以幅度和相位的不同来区分。但是,混频器所对应的调制方式之 所以称之为“线性调制”,主要是由于从频谱的角度只进行了简单的搬移。 在 FDMA 通信系统中,首先把传输频带划分为若干个较窄的且互不重叠的子频带,每 个用户分配带一个固定子频带,按频带区分用户,如图(4)所示。信号调制到该子频带内, 各用户信号同时传送,接收时分别按频带提取信号,实现多址通信。所以 FDMA 实现的是 频率域上的正交性。其中 FDMA 的正交分割条件为:
f2
f1
1,n m xm ( f ) xn ( f )df 0,n m
(2)
如果用理想滤波器分割各用户信号,不需要保护间隔也能满足正交分割条件。但是, 理想滤波器在工程上是不可能实现的,则各信号间总存在一定的相关性,总会有一定的干 扰。因此各频带之间需留有一定的保护间隔以减少各频带之间的串扰。 FDMA 有采用模拟调制的,也有采用数字调制方式的,可以由一组模拟信号用频分复
4
用方式(FDM/FDMA)或一组数字信号用时分复用方式(TDM/FDMA)占用一个较宽的频带, 调制到相应的子频带后传送到同一个地址。
图 4 频分多址的子频带划分
通过前面的分析可以得出 FDMA 通信系统之所以可以使不同的用户分配在时隙相同而频 率不同的信道上传输,其核心的思想是频分复用。即不同的信号运用不同的载波进行调 制, 而载波带宽被划分为多种不同频带的子信道, 每个子信道可以并行传送一路信号。 而接收端通过不同的带通滤波器将各路不同的信号提取出来,再通过解调和低通滤波 器,进而恢复原始信号。从而可以得到如图( 5 )所示的简化 FDMA 通信模型。
图 5 频分复用通信系统模型
5
三、频分多路复用系统设计
3.1 语音信号采样
语音信号的采样即为信号的抽样过程,是把连续时间模拟信号转换成离散时间连续幅 度的抽样信号,其实质就是用一固定频率的抽样信号周期性的读出或测量该连续时间模拟 信号。设抽样信号的频率为 f s ,则抽样周期为 T s 。抽样以后的信号仍为模拟量,只不过是 时间上离散的脉冲调制信号。如图(6)所示,f(t)为输入的被抽样信号,p(t)为抽样信号, 而 f0(t)为抽样后输出信号。理想的抽样应是冲激序列,但实际抽样通常是平顶抽样或自然 抽样。
图 6 抽样过程波形
抽样的理论基础是抽烟定理,它说明在什么
条件下能从抽样输出信号 f0(t)中恢复输入 信号 f(t)。根据频谱分析理论,只有抽样信号的频率不发生重叠现象时,抽样的频谱才能 与信号频谱相一致。因此,抽样定理可表述为:为了使抽样信号 f0(t)能完全恢复连续信号 f(t),抽样信号重复频率 f s 必须大于等于 2 倍的 f H , f H 为包含任何干扰在内的信号 f(t)
6
的最高有效频率,即
fs 2 fH
其中, f s 2 f H 为奈奎斯特频率。
(3)
由于实际滤波器特性的不理想,抽样频率 f s 通常都有高于 f H ,一般取 3 到 5 倍 f H 。 语音信号频谱在 300—3400Hz 内, 由 (3) 式可知语音采样频率 f s 必须大于 6.8KHz。 在 MATLAB 数据采集箱中提供语音采集 wavrecord 命令,wavrecord 命令利用 Windows 音频输入设备 记录声音,其调用形式为:wavrecord (n ,fs ,ch)。利用 Windows 音频输入设备记录 n 个音 频采样, 频率为 fs Hz ,通道数为 ch。采样值返回到一个大小为 n*ch 的矩阵中。缺省时,fs = 11025 ,ch = 1。 其中 MATLAB 提供的标准音频采样频率有:8000、 11025、 22050 和 44100Hz。 为了保证语音的质量,本次设计中取语音信号的采用频率为 44100Hz,该采样频率为语音信 号 CD 音质。语音信号采集后,可以用 MATLAB 数据采集箱中 wavwrite 命令保存采集的语音 信号。
3.2 语音信号的调制
语音信号的调制即为频分复用的混频过程,该过程关键是对各路语音信号载波频率的 选取。混频过程的时域表示式如前面的(1)式所示,为双边带信号(DSB),它的带宽是 基带信号带宽 f H 的 2 倍,即调制后的带宽为:
B 2 fH
(4)
为了使各个信号不会相互干扰,各个载频的间隔既要大于调制后带宽 B,设各载波的频 率间隔为 f g ,由于 f H 3.4kHz ,所以
f g B 2 f H 2 3.4kHz 6.8kHz
(5)
另外,在选取各路信号载波频率时,还需要考虑混叠频率 f a 。所谓混叠频率,就是当 利用一个抽样频率为 f s 的离散时间系统进行信号处理时信号所允许的最高频率。任何大于
f a 的分量都将重叠起来而不能恢复,并使正规频带内的信号也变得模糊起来。根据抽样定
理可知:
1 fs (6) 2 由于前面语音信号采样频率 f s 44.1kHz ,所以混叠频率: 1 1 f a f s 44.1kHz 22.05kHz (7) 2 2 综合上述考虑,由(5)式可取载波频率间隔 f g 为 7000Hz,由(7)式可知最高载波频 fa
率要小于 f a 为 22050Hz,如果本次设计取第 1 路语音信号的载波频率 f c1 为 4000Hz,则第 2 路信号的载波频率 f c 2 为 11000Hz,第 3 路信号的载波频率 f c 3 为 18000Hz。同时满足最高载
7
波频率 f c3 f a 的要求。 根据前面的混频原理,可以得到如图(7)所示的频谱结构。
图 7 三路语音信号
调制后频谱结构
3.3 滤波器的设计
切比雪夫滤波器(又译车比雪夫滤波器)是在通带或阻带上频率响应幅度等波纹 波动的滤波器。在通带波动的为“I 型切比雪夫滤波器”,在阻带波动的为“II 型切 比雪夫滤波器”。切比雪夫滤波器在过渡带比巴特沃斯滤波器的衰减快,但频率响应 的幅频特性不如后者平坦。切比雪夫滤波器和理想滤波器的频率响应曲线之间的误差 最小,但是在通频带内存在幅度波动。 n 阶第一类切比雪夫滤波器的幅度与频率的关系可用下列公式表示:
(2.4)
其中:| ε
|
(2.5)是滤波器在截止频率ω 0 的放大
率 ,
是 n 阶切比雪夫多项式:
8
(2.6)
MATLAB 信号处理工具箱提供切比雪夫Ⅰ型滤波器设计函数有 cheb1ap、cheb1ord 和 cheby1: 数字域:[b,a]=cheby1(n,Rp,Wn)可设计出 n 阶 chebyshevI 滤波器,其截止频率由 Wn 确 定,通带内的波纹由 Rp 确定 [b,a]=cheby1(n,Rp,Wn,’ftype’) 当 ftype=high 时,可设计出截止频率为 Wn 的高通滤波器; 当 ftype=stop 时,可设计出带阻滤波器 [z,p,k]=cheby1(n,Rp,Wn) [zp,k]= cheby1 (n,Rp,Wn,’ftype’) [A,B,C,D]= cheby1 (n,Rp,Wn) [A,B,C,D]= cheby1 (n,Rp,Wn,’ftype’) 模拟域:[b,a]= cheby1 (n,Rp,Wn,’s’)可设计出截止频率为 Wn 的 n 阶 chebyshevI 型模拟 滤波器,其余形式类似于数字域的。 z、极点向量 p 和增益因子 k。Rp 和 As 分别为通带最大衰减和阻带最小衰减。 [N,wpo]=ellipord(wp,ws,Rp,As,‘s’)——。用于计算满足指标的椭圆模拟滤波器的最低 阶数 N 和通带边界频率 wpo,指标要求由参数(wp,ws,Rp,As)给定。 [b,a]=ellip(n,Rp,Rs,Wn,’ftype’,‘s‘)——计算椭圆滤波器系统函数系数向量 b 和 a。当 ftype=high 时,可设计出截止频率为 Wn 的高通滤波器;当 ftype=stop 时,可设 计出带阻滤波器 图 2.6 是各滤波器频域响应图:巴特沃斯滤波器(左上)和同阶第一类切比雪夫滤波 器(右上)、第二类切比雪夫滤波器(左下)、椭圆函数滤波器(右下)的频率响应图。 巴特沃斯滤波器的衰减速度比其他类型滤波器缓慢,但十分平坦,没有幅度变化。 两类切比雪夫滤波器比巴特沃斯滤波器陡峭; 但不如椭圆函数滤波器,然而后者幅度 波动较大。 椭圆滤波器比其他滤波器更陡,因此在选择滤波器的时候,椭圆滤波器能够以较低的 阶数获得较窄的过渡带宽,但是它在通带和阻带上都有波动。
9
3.4 信道噪声
信道中存在不需要的电信号统称为噪声。通信系统中的噪声是叠加在信号上的,没有 传输信号时通信系统中也有噪声,噪声是永远存在于通信系统中的。噪声可以看成是信道 中的一种干扰,也称为加性噪声,因为它是叠加在信号之上的。最基本的调制信道有一
对 输入端和一对输出端, 其输入端信号电压 ei (t ) 和输出端电压 eo (t ) 间的关系可以用下式表示:
eo (t ) f [ei (t )] n(t )
(11)
式中: ei (t ) 为信道输入端信号电压; eo (t ) 为信道输出端得信号电压; n (t ) 为噪声电压。 由于信道中的噪声 n (t ) 是叠加在信号上的,而且无论有无信号,噪声 n (t ) 是始终存在的。当 没有信号输入时,信道输出端也有加性干扰输出。 f [ei (t )] 表示信道输入和输出电压之间的 函数关系。所以在信道数学分析时,可以假设 f [ei (t )] k (t )ei (t ) ,即信道的作用相当于对输 入信号乘一个系数 k (t ) 。这样,式(11)就可以改写为:
eo (t ) k (t )ei (t ) n(t )
很复杂的函数,它反映信道的特征。一般说来,它是时间 t 的函数。
(12)
式(12)就是调制信道的一般数学模型。其数学模型图可以图(8)所示。 k (t ) 是一个
10
图 8 调制信道数学模型
噪声又可以分为认为噪声和自然噪声两大类。其中以自然噪声最难处理,而自然噪声 中最重要的噪声为热噪声。由于在一般通信系统的工作频率范围内热噪声的频谱是均匀分 布的,所以热噪声又常称为白噪声。由于热噪声是由大量自由电子的运动产生的,其统计 特性服从高斯分布,故常将热噪声称为高斯白噪声。所以本次设计中模拟信道噪声可以用 MATLAB 软件加入一个随机的高斯白噪声在复用信号中。
11
四、仿真及实验分析
4.1 设计流程图
开始
产生三个不同频段的信号
进行 DFT 变换
信号叠加
滤波器设计
滤 波
还原出原始信号
结束
4.2 语音信号的时域和频域仿真
4.2.1 信号的时域仿真 使用 MATLAB 软件可以对采集的语音信号进行时域和频域分析。可以使用 subplot
12
(m,n,p)或者 subplot(m n p)将多个图画到一个平面上的工具。其中,m 表示是图排成 m 行,n 表示图排成 n 列,也就是整个 figure 中有 n 个图是排成一行的,一共 m 行,p 则是指 要把曲线画到 figure 中哪个图上。MATLAB 中绘图命令 plot(x,y),其含义是以 x 为横坐标, y 为纵坐标,绘制图形。可得到如图(9)所示的时域分析图
图 9 声音样本的时域分析
4.2.2 信号频域仿真 频域分析主要是将 4 个声音样本信号 sd1、sd2、sd3 和 sd4 用 MATLAB 软件进行快速傅 里叶变换后,再画出 4 个信号的频谱图。其中快速傅里叶变换可以直接用 MATLAB 中的 fft 命令,然后通过 abs 得到经过快速傅里叶变换后信号的振幅。最后用 MATLAB 中 stem 命令 对于得到的离散序列实现其频谱图的绘制。可以得到如图(10)所示的声音信号频谱分析 图。
4.3 复用信号的频谱仿真
在 MATLAB 软件中将采样的 3 路语音信号经过混频处理得到 4 路已
调信号 x1、 x2、 x3 和 x4 , 再 通 过 加 法 器 将 3 路 信 号 变 为 一 路 复 用 信 号 s , 通 过 MATLAB 软 件 中 stem(t,abs(fft(s)),'.')命令对复用信号 s 进行了频谱分析,其频谱分析如图(11)所示。
13
图 10 声音样本的频谱分析
图 11 复用信号的频谱分析
4.4 传输信号的仿真
我们都知道 FDMA 通信系统的复用信号传输是通过空气介质传输的,复用信号在空气 传输中会有很多的噪声,其中主要是以高斯白噪声为主,所以在信号传输的设计仿真中, 主要对复用信号加入高斯白噪声。 在 MATLAB 中可以通过 awgn 函数在某一信号中加入高斯白噪声,其调用方式为:y = awgn(x,SNR),其意义是在信号 x 中加入高斯白噪声;信噪比 SNR 以 dB 为单位,x 的强度 假定为 0dBW。如果 x 是复数,就加入复噪声。通过前面的调制和信号复用设计后,得到了 复用信号 s,使用 MATLAB 中的 awgn 函数加入高斯白噪声后复用信号变为 ys。为了使后
14
面能够较好的恢复语音信号,所以在这里加入白噪声时,信噪比不能设置的太小。仿真发 现大于 20dB 时失真比较小。图(12)为加入高斯白噪声后,复用信号 ys 的频谱图。
图 12 加入高斯白噪声后复用信号的频谱分析
4.5 解调信号的频谱仿真
信号解调前,首先通过 4 个带通滤波器对复用信号 s 进行滤波,得到 4 路调制的语音 信息 y1、y2.y3 和 y4,然后在对这三路信号进行解调,解调过程与调制的过程相同,使用 与原来调制载波相同的信号分别与滤波后的 4 路信号相乘。得到 4 路解调信号 y01、y02、 y03 和 y04。然后对各路信号使用 MATLAB 软件中的快速傅里叶变换函数 fft 进行变换,并 通过 MATLAB 软件,得到的 4 路解调信号的频谱如图(13)所示。
15
图 13 解调后信号的频谱图
4.6 恢复信号的时域与频域仿真
语音信号的恢复就是将前面解调所得到的 4 路信号 y01、y02、y03 和 y04 再通过低通 滤波器使用 filter 函数滤波后,分别得到 4 路恢复的语音信号。然后调用 MATLAB 中的 plot(t,yy1)函数和 subplot 函数对恢复的 4 路语音信号进行时域分析,其时域分析波形如图 (14)所示。
图 14 恢复信号的时域波形
16
图 15 恢复信号的频谱图
同样调用 MATLAB 中的 stem(t,abs(fft(yy1)))函数和 subplot 函数对恢复的 4 路语音信号 进行频谱分析,其频谱如图(15)所示。 程 序 的 最 后 为 语 音 的 再 现 , 与 前 面 语 音 播 放 一 样 , 可 以 直 接 使 用 MATLAB 中 wavplay(yy1,fs) 函 数 对 语 音 1 进 行 播 放 , 其 它 两 路 信 号 播 放 方 式 相 同 。
17
五、总
结
这次课程设计是运用 MATLAB 软件的 Simulink 工具平台进行的, 对频分多路复用系统 进行仿真,根据频分多路复用
原理得出频分复用系统的实现框图,用 SIMULINK 对频分多 路复用通信系统进行仿真,输出个部分波形。设计频分复用系统从开始几天的查阅资料到 学习使用软件工具,再到建立仿真模型,最后进行仿真分析。这个过程中学习参照知识和 联系实际结合起来,一步一步做出了可行的方案。 另外在低通滤波阶段,得到的恢复信号与原始信号基本一致,但是频谱在 0Hz 附近有 所失真,这是由于频谱混叠所致,各信号频谱混叠部分均为高频部分,即频率最高的区域, 引起高频部分失真,这是因为传输期间引入频率高于模拟信号的噪声,所以如果在完全无 噪声的环境中进行传输,可得无失真的恢复信号。仿真结果分析表明,信号在频分复用时 还存在着频间干扰的问题,对此,采用了适当加大保护频带的方法,在较大程度上使该问 题得以解决,至于完全消除频谱间的干扰,还有待进一步研究与完善。 课设时也遇到了许多问题,比如仿真参数的设置,大部分得到了很好的解决。但仍然 存在一些问题,像有些仿真图不够明朗直观地反映理论结果,这些都是课程设计中的不足, 但总的来看设计系统还可以满足任务要求,仿真结果能反映出频分复用的优越性,它是可 行的,在设计中经过不断的修改调试,在 MALTAB 上仿真频分复用多址通信技术取得了较 好的效果。信号再经过调试和解调后的信号与原来相比较为接近。我觉得仿真的成功关键 在于载波频率的选择以及带通和低通滤波器的参数设计。
18
致 谢
在本次《信号处理》课程设计中,我对于频分多路复用技术专业理论知识部分有了更 客观、更直接的认识。课程设计给了我们将理论应用到真实的系统设计上的机会,对于频 分多路复用系统仿真设计有了深刻的印象,对于今后进一步深入研究学习有重要的指导意 义。 最后,感谢课程设计指导老师对我的指导,还要感谢和我一起记性讨论和研究的小组 成员,这次课程设计的顺利完成离开你们的帮助。
19
参考文献
[1]《电子技术实验教程[M]》王紫婷 西南交大出版社 2001
[2]《通信原理》 王福昌 熊兆飞 黄本雄
清华大学出版社 2006 国防工业出版社 2003 国防工业出版社 2001
[3]《MATLAB 仿真技术与应用教程》 钟麟 王峰 [4]《MATLAB 通信仿真与技术应用》刘敏 魏玲
[5]《数字通信原理与技术》(第二版) 王兴亮西安电子科技大学出版社 2000 [6]《徐炳祥等通信原理(第 5 版) 》 樊昌信 北京国防工业出版社 2005
20
附
MATLAB 仿真程序 %(1)获取录音文件 pause fs=44100; %声音的采样频率为 44.1Khz duration=2; %录音时间为 2s fprintf('按任意键开始录音 1:\n'); pause fprintf('录
音中•••\n');
录
sd1=wavrecord(duration*fs,fs); %duration*fs 每次获得总的采样数为 132300, 保存声音文件名 为 sd1 fprintf('放音中•••\n'); wavplay(sd1,fs); fprintf('录音 1 播放完毕。\n'); wavwrite(sd1,fs,'sound1.wav'); %将录音文件保存为 WAV 格式的声音文件 fprintf('按任意键 开始录音 2:\n'); fprintf('按任意键开始录音 2:\n'); pause fprintf('录音中•••\n'); sd2=wavrecord(duration*fs,fs); fprintf('放音中•••\n'); wavplay(sd2,fs); fprintf('录音 2 播放完毕。\n'); wavwrite(sd2,fs,'sound2.wav'); fprintf('按任意键开始录音 3:\n'); pause fprintf('录音中•••\n'); sd3=wavrecord(duration*fs,fs); fprintf('放音中•••\n');
21
wavplay(sd3,fs); fprintf('录音 3 播放完毕。\n'); wavwrite(sd3,fs,'sound3.wav'); fprintf('按任意键开始录音 4:\n'); pause fprintf('录音中•••\n'); sd4=wavrecord(duration*fs,fs); fprintf('放音中•••\n'); wavplay(sd4,fs); fprintf('录音 4 播放完毕。\n'); wavwrite(sd4,fs,'sound4.wav'); %(2)声音样本的时域和频域分析 fprintf('按任意键开始声音样本的时域分析:\n'); pause fs=44100; %声音的采样频率为 44.1Khz duration=3; t=0:duration*fs-1; %总的采样数 [sd1,fs]=wavread('sound1.wav'); %打开保存的录音文件 [sd2,fs]=wavread('sound2.wav'); [sd3,fs]=wavread('sound3.wav'); [sd4,fs]=wavread('sound4.wav'); figure(1) %图一为四个声音样本的时域波形 subplot(411) plot(t,sd1);xlabel('单位:s');ylabel('幅度'); title('四个声音样本的时域波形'); subplot(412) plot(t,sd2);xlabel('单位:s');ylabel('幅度'); subplot(413) plot(t,sd3);xlabel('单位:s');ylabel('幅度'); subplot(414) plot(t,sd4);xlabel('单位:s');ylabel('幅度'); fprintf('按任意键开始声音样本的频域分析:\n');
22
pause figure(2) %图二为四个声音样本的频谱分析 subplot(411) stem(t,abs(fft(sd1)),'.'); %fft 对声音信号进行快速傅里叶变换 xlabel('单位: Hz');ylabel('幅度'); title('四个声音样本的频谱分析'); subplot(412) stem(t,abs(fft(sd2)),'.');xlabel('单位:Hz');ylabel('幅度'); subplot(413) stem(t,abs(fft(sd3)),'.');xlabel('单位:Hz');ylabel('幅度'); subplot(414) stem(t,abs(fft(sd4)),'.');xlabel('单位:Hz');ylabel('幅度'); %(3)调制,将三个声音信号用高频载波进行调制 fprintf('按任意键开始信号的调制和复用信号频域分析:\n'); pause x1=4*sd1'.*cos(2*pi*4000*t/fs); x2=4*sd2'.*cos(2*pi*11000*t/fs); x3=4*sd3'.*cos(2*pi*18000*t/fs); x4=4*sd4'.*cos(2*pi*25000*t/fs); s=x1+x2+x3+x4; figure(3) stem(t,abs(fft(s)),'.');xlabel('单位:Hz');ylabel('幅度'); title('复用信号的频谱分析'); %(4)信号传输仿真设计 fprintf('按任意键开始信道仿真设计:\n'); %加入高斯白噪声 pause ys=awgn(s,20); snr=10*log10((s*s')/((s-ys)*(s-ys)')); snr %计算信噪比 figure(4) stem(t,abs(fft(ys)),'.');xlabel('单位:Hz');ylabel('幅度'); title('
加入高斯白噪声后复用信号的频谱分析');
23
%(5)带通滤波器的设计 fprintf('按任意键开始带通滤波器的设计:\n'); pause Rp=0.5; Rs=40; Wp1=[2600 6000]/22050; Ws1=[2200 6500]/22050; [n1,Wn1]=cheb2ord(Wp1,Ws1,Rp,Rs); [b1,a1]=cheby2(n1,Rs,Wn1); [h1,w1]=freqz(b1,a1); mag1=abs(h1); db1=20*log10((mag1+eps)/max(mag1)); Wp2=[6800 10000]/22050; Ws2=[6700 11000]/22050; [n2,Wn2]=cheb2ord(Wp2,Ws2,Rp,Rs); [b2,a2]=cheby2(n2,Rs,Wn2); [h2,w2]=freqz(b2,a2); mag2=abs(h2); db2=20*log10((mag2+eps)/max(mag2)); Wp3=[11500 15000]/22050; Ws3=[11000 15400]/22050; [n3,Wn3]=cheb2ord(Wp3,Ws3,Rp,Rs); [b3,a3]=cheby2(n3,Rs,Wn3); [h3,w3]=freqz(b3,a3); mag3=abs(h3); db3=20*log10((mag3+eps)/max(mag3)); Wp4=[16000 19500]/22050; Ws4=[15500 19700]/22050; [n4,Wn4]=cheb2ord(Wp4,Ws4,Rp,Rs); [b4,a4]=cheby2(n4,Rs,Wn4); [h4,w4]=freqz(b4,a4);
24
mag4=abs(h4); db4=20*log10((mag4+eps)/max(mag4)); figure(5); subplot(4,1,1); plot(w1/pi,db1);axis([0 1 -50 20]);xlabel('w/pi');ylabel('20lg|H(ejw)|'); title('用切比雪夫 2 型设计四个带通滤波器'); subplot(4,1,2); plot(w2/pi,db2);axis([0 1 -50 20]);xlabel('w/pi');ylabel('20lg|H(ejw)|'); subplot(4,1,3); plot(w3/pi,db3);axis([0 1 -50 20]);xlabel('w/pi');ylabel('20lg|H(ejw)|'); subplot(4,1,4); plot(w4/pi,db4);axis([0 1 -50 20]);xlabel('w/pi');ylabel('20lg|H(ejw)|'); y1=filter(b1,a1,ys); y2=filter(b2,a2,ys); y3=filter(b3,a3,ys); y4=filter(b4,a4,ys); %(6)解调 fprintf('按任意键开始信号的解调和 4 路信号频域分析:\n'); pause fs=44100; y01=y1.*cos(2*pi*3000*t/fs); y02=y2.*cos(2*pi*6000*t/fs); y03=y3.*cos(2*pi*10000*t/fs); y04=y4.*cos(2*pi*15000*t/fs); figure(6) subplot(411) stem(t,abs(fft(y01)),'.');xlabel('单位:Hz');ylabel('幅度'); title('解调后的 4 路信号各自的频谱图'); subplot(412) stem(t,abs(fft(y02)),'.');xlabel('单位:Hz');ylabel('幅度'); subplot(413)
25
stem(t,abs(fft(y03)),'.');xlabel('单位:Hz');ylabel('幅度'); subplot(414) stem(t,abs(fft(y04)),'.');xlabel('单位:Hz');ylabel('幅度'); %(7)低通滤波 fprintf('按任意键开始低通滤波器的设计:\n'); pause Rp=0.5; Rs=40; Wp1=3400/22050; Ws1=4000/22050; [n1,Wn1]=cheb2ord(Wp1,Ws1,Rp,Rs); [b1,a1]=cheby2(n1,Rs,Wn1); [h1,w1]=freqz(b1,a1); mag1=abs(h1); db1=20*log10((mag1+eps)/max(mag1)); figure(7); plot(w1/pi,db1); axis([0 1 -50 20]); xlabel('w/pi'); ylabel('20lg|H(ejw)|'); title('低通滤波器的频率响应'); %(8)恢复信号的时域波形和频谱分析 fprintf('按任意键开始恢复信号以及 4 路信号时域分析:\n'); pause yy1=filter(b1,a1,y01); yy2=filter(b1,a1,y02); yy3=filter(b1,a1,y03); yy4=filter(b1,a1,y04); figure(8) %图七恢复信号的时域波形 subplot(411) plot(t,yy1);xlabel('单位:s');ylabel('幅度');
26
title('恢复信号的时域波形'); subplot(412) plot(t,yy2);xlabel('单位:s');ylabel('幅度'); subplot(413) plot(t,yy3);xlabel('单位:s');ylabel('幅度'); fprintf('按任意键开始 3 路信号频域分析:\n'); subplot(414
) plot(t,yy4);xlabel('单位:s');ylabel('幅度'); pause figure(9) %图八恢复信号的频谱分析 subplot(411) stem(t,abs(fft(yy1)));xlabel('单位:Hz');ylabel('幅度'); title('恢复信号的频谱分析'); subplot(412) stem(t,abs(fft(yy2)));xlabel('单位:Hz');ylabel('幅度'); subplot(413) stem(t,abs(fft(yy3)));xlabel('单位:Hz');ylabel('幅度'); subplot(414) stem(t,abs(fft(yy4)));xlabel('单位:Hz');ylabel('幅度'); fprintf('按任意键使声音再现:\n'); pause fprintf('放音中•••\n'); wavplay(yy1,fs); wavplay(yy2,fs); wavplay(yy3,fs); wavplay(yy4,fs); fprintf('放音完毕,仿真结束!\n')
27
28