本书以全新的编排方式,由浅入深、循序渐进,并引入MATLAB现代仿真方法,介绍离散时间信号处理的基本内容,包括离散时间信号与系统的基本概念;离散时间信号的频域分析;离散傅里叶变换;数字滤波器的基本结构;IIR与FIR滤波器设计方法;MATLAB基础;序列及离散系统仿真;傅里叶变换仿真;IIR与FIR滤波器设计仿真。
离散时间信号处理是指把信号用数字或符号表示的序列,通过计算机或通用(专用)信号处理设备,用数字的数值计算方法进行处理(如滤波、变换、压缩、增强、估计、识别等),以达到提取有用信息便于应用的目的。
信号是信息的物理表现形式,或者是传递信息的函数,而信息则是信号的具体内容。同一种信号,如电信号,可以从不同角度进行分类。按照信号的变量进行分类,可将信号分为一维信号、二维信号、多维信号等。其中,若信号是一个变量(如时间)的函数,则称为一维信号;若信号是两个变量(如空间坐标 , )的函数,则称为二维信号;推而广之,若信号是多个变量的函数,则称为多维信号。本书仅讨论一维信号。
变量的取值方式有连续与离散两种,若变量(一般都看成时间)是连续的,则称为连续时间信号;若变量是离散数值,则称为离散时间信号。信号幅值的取值方式又分为连续和离散两种方式(幅值的离散称之为量化),因此组合起来应该有以下4种情况。(1)连续时间信号:时间是连续的,幅值可以是连续的也可以是离散(量化)的;(2)模拟信号:时间是连续的,幅值是连续的;(3)离散时间信号(或称为序列):时间是离散的,幅值是连续的;(4)数字信号:时间是离散的,幅值是量化的。由于幅值是量化的,故数字信号可用一串数来表示,而每个数又可表示为二进制码的形式。本书仅讨论离散时间信号的分析和处理。
系统一般指处理(或变换)信号的物理设备,或者进一步说,凡是能将信号加以变换以达到人们要求的各种设备都称为系统。实际上,因为系统是完成某种运算或操作的,因而我们还可把软件编程也看成一种系统的实现方法,按所处理的信号种类的不同可将系统分为四类。(1)模拟系统:处理模拟信号,系统输入、输出均为连续时间连续幅度的模拟信号;(2)连续时间系统:处理连续时间信号,系统输入、输出均为连续时间信号。(3)离散时间系统:处理离散时间信号(序列),系统输入、输出均为离散时间信号;(4)数字系统:处理数字信号,系统输入、输出均为数字信号。
离散时间信号处理的实现方法基本上可以分为两种,即软件实现方法和硬件实现方法。软件实现方法是指按照原理和算法编写计算机程序在通用计算机上实现;硬件实现是指按照具体的要求和算法,设计硬件结构图,用乘法器、加法器、延迟器、控制器、存储器以及输入/输出接口等基本部件实现的一种方法。两者比较起来,软件实现方法更加灵活,只需更改程序中的有关参数即可调整系统的功能,但软件实现方法的运算速度较慢,一般达不到实时处理要求;而硬件实现方法的运算速度快,可以达到实时处理要求,但是不灵活。采用专用的数字信号处理芯片(DSP芯片)实现的方法属于软硬件结合的方法。DSP芯片结合了离散时间信号处理的特点,内部配有乘法器和累加器,结构上采用了流水线工作方式以及并行结构、多总线结构,且配有适合离散时间信号处理的指令,是一类可实现高速运算的微处理器。使用DSP芯片实现离散时间信号处理已经变成工程技术领域中的主要实现方法。
在实际中,离散时间信号处理通常通过数字系统来实现,因而具有数字系统的诸多优点。例如,离散时间信号处理具有精度高、可靠性强的特点。模拟系统的精度由元器件决定,而模拟元器件的精度很难达到 以上,而数字系统只要14位字长就可达到 的精度。又因为数字系统只有两个信号电平0和1,因而受周围环境的温度及噪声的影响较小。而模拟系统的各元器件易受到温度、噪声、电磁感应等的影响。另外,离散时间信号处理还具有灵活性高、容易大规模集成的特点。数字系统中乘法器的系数等是存放在存储器中的,因而只需要改变存储的系数就可得到不同的系统,比改变模拟系统方便。而且由于数字部件具有高度规范性,便于大规模集成、大规模生产,而对电路参数要求不严,故产品成品率高。此外,离散时间信号处理还便于实现时分复用、获得高性能指标,以及实现二维与多维处理等。
由于离散时间信号处理的突出优点,使得它在通信、语音、雷达、地震探测、声呐、遥感、生物医学、电视、仪器中得到越来越广泛的应用。离散时间信号处理在滤波和变换方面的应用包括数字滤波、卷积、相关、快速傅里叶变换、希尔伯特变换、自适应滤波等;在通信方面的应用包括自适应差分脉冲调制、自适应均衡、纠错编码、信道复用、移动电话、调制解调器、数据或数字信号的加密、扩频技术、回波抵消、软件无线电等;在语音方面的应用包括声码器、语音压缩、数字录音系统、语音识别、语音合成、语音增强、文本语音变换、神经网络等;在图形图像方面的应用包括图像压缩、图像增强、图像复原、图像重建、图像变换、图像分割、计算机视觉等;在军事方面的应用包括雷达处理、声呐处理、导航、射频调制解调器、侦察卫星、航空航天测试、自适应波束形成、阵列天线信号处理、水听器阵列信号处理等。
本书内容主要分为两部分,其中,第1章至第6章主要介绍离散时间信号处理的基本概念和相关理论知识,第7章至第11章主要介绍离散时间信号处理的MATLAB仿真方法。
第1章介绍了离散时间信号与系统,包括离散时间信号、线性移不变(LTI)系统、离散时间系统的输入/输出关系、连续时间信号的采样等。
第2章介绍了离散时间信号的频域分析,包括z变换的定义与收敛域、逆z变换、z变换的基本性质和定理、离散时间傅里叶变换、离散时间傅里叶变换的性质、周期序列的离散傅里叶级数、离散系统的频域分析等。
第3章介绍了离散傅里叶变换,包括离散傅里叶变换的定义、离散傅里叶变换的矩阵表示、离散傅里叶变换的性质、离散傅里叶变换的应用、快速傅里叶变换等。
第4章介绍了数字滤波器的基本结构,包括数字滤波器的分类及表示方法、IIR滤波器的基本结构、FIR滤波器的基本结构等。
第5章介绍了IIR滤波器设计方法,包括数字滤波器的基本概念、模拟滤波器的设计、冲激响应不变法、双线性变换法、数字IIR滤波器的谱变换等。
第6章介绍了FIR滤波器设计方法,包括线性相位、窗函数设计法等。
第7章介绍了MATLAB的基础知识,包括MATLAB概述,MATLAB工作界面,数值、变量及表达式,数组和矩阵运算,图形绘制等。
第8章介绍了序列及离散系统的MATLAB仿真,包括离散时间信号及采样定理、典型的离散序列、序列的运算、离散时间系统、z变换和逆z变换、离散系统的z域描述等内容的MATLAB仿真。
第9章介绍了傅里叶变换的MATLAB仿真,包括离散时间傅里叶变换、周期序列的离散傅里叶级数、离散傅里叶变换、快速傅里叶变换等内容的MATLAB仿真。
第10章介绍了IIR滤波器设计的MATLAB仿真,包括模拟滤波器的设计、IIR数字滤波器的设计、IIR数字滤波器的应用等内容的MATLAB仿真。
第11章介绍了FIR滤波器设计的MATLAB仿真,包括FIR滤波器的窗函数设计、FIR滤波器的应用等内容的MATLAB仿真。
本书由江西师范大学的王芳、陈勇,以及西北工业大学的何成兵等合作编写完成,本书的编写得到了国家自然科学基金(61601209),江西省自然科学基金(20171BAB202003),以及江西省教育厅科学技术研究项目(GJJ160338)等的支持。限于编者水平,难免有错误或不完善之处,恳请广大读者予以批评指正。
编著者
王芳,2008年至今,江西师范大学物理与通信电子学院,从事信号处理方面的课程教学与研究,获江西师范大学教学成果奖二等奖;承担国家自然科学基金项目1项,江西省自然科学基金项目1项,江西省教育厅科技项目1项。
第1章 离散时间信号与系统1
1.1 离散时间信号1
1.1.1 典型序列2
1.1.2 序列的运算及应用6
1.2 线性移不变系统8
1.2.1 离散时间系统举例8
1.2.2 离散时间系统分类9
1.3 离散时间系统的输入/输出关系13
1.3.1 常系数线性差分方程13
1.3.2 线性卷积15
1.4 连续时间信号的采样18
1.4.1 时域采样定理18
1.4.2 时域信号的恢复21
习题123
第2章 离散时间信号的频域分析26
2.1 z变换的定义与收敛域26
2.2 逆z变换28
2.3 z变换的基本性质和定理33
2.4 离散时间傅里叶变换42
2.5 离散时间傅里叶变换的性质44
2.6 周期序列的离散傅里叶级数50
2.7 离散系统的频域分析54
2.7.1 系统函数54
2.7.2 系统的因果性与稳定性55
2.7.3 频率响应56
2.7.4 零极点与频率响应的关系57
习题264
第3章 离散傅里叶变换67
3.1 离散傅里叶变换的定义67
3.1.1 离散傅里叶变换的定义67
3.1.2 DFT变换与DTFT变换及z变换的联系72
3.2 离散傅里叶变换的矩阵表示73
3.2.1 正交序列与正交空间73
3.2.2 DFT变换的矩阵形式解释76
3.3 离散傅里叶变换的性质78
3.4 离散傅里叶变换的应用85
3.4.1 线性卷积的计算85
3.4.2 信号谱分析88
3.5 快速傅里叶变换94
习题399
第4章 数字滤波器的基本结构101
4.1 数字滤波器的分类及表示方法101
4.2 IIR滤波器的基本结构104
4.2.1 直接I型104
4.2.2 直接II型105
4.2.3 级联型105
4.2.4 并联型106
4.3 FIR滤波器的基本结构110
4.3.1 直接型110
4.3.2 级联型110
4.3.3 频率采样型111
4.3.4 线性相位型113
习题4119
第5章 IIR滤波器设计方法121
5.1 数字滤波器的基本概念121
5.2 模拟滤波器的设计122
5.2.1 巴特沃斯模拟滤波器设计原理122
5.2.2 切比雪夫模拟滤波器设计原理125
5.3 冲激响应不变法126
5.4 双线性变换法131
5.5 IIR数字滤波器的谱变换135
习题5138
第6章 FIR滤波器设计方法140
6.1 线性相位140
6.1.1 线性相位的基本概念140
6.1.2 线性相位的实现条件143
6.2 窗函数设计法146
习题6152
第7章 MATLAB基础154
7.1 MATLAB概述154
7.1.1 MATLAB发展史154
7.1.2 MATLAB主要功能154
7.2 MATLAB工作界面155
7.2.1 命令行窗口155
7.2.2 MATLAB帮助系统156
7.2.3 图形窗口157
7.2.4 M文件编辑窗口158
7.2.5 当前目录窗口159
7.2.6 MATLAB搜索路径160
7.2.7 工作区窗口160
7.3 数值、变量与表达式162
7.3.1 数值162
7.3.2 变量163
7.3.3 表达式164
7.4 数组和矩阵运算165
7.4.1 数组的创建与寻访165
7.4.2 数组运算169
7.4.3 矩阵的创建、寻访及运算173
7.5 图形绘制178
7.5.1 绘制二维图形178
7.5.2 绘制三维图形189
习题7194
第8章 序列及离散系统的MATLAB仿真195
8.1 离散时间信号及采样定理的MATLAB仿真195
8.1.1 离散时间信号195
8.1.2 采样定理196
8.2 典型离散序列的MATLAB仿真197
8.2.1 单位脉冲序列197
8.2.2 单位阶跃序列198
8.2.3 斜坡序列199
8.2.4 正弦和余弦序列200
8.2.5 指数序列201
8.2.6 周期序列203
8.3 序列运算的MATLAB仿真204
8.3.1 序列的加法和乘法204
8.3.2 序列的尺度变换207
8.3.3 序列的翻转及移位208
8.3.4 序列的奇偶性209
8.3.5 序列的卷积和211
8.4 离散时间系统的MATLAB仿真212
8.4.1 离散时间系统的零状态响应212
8.4.2 离散时间系统的单位脉冲响应213
8.4.3 离散时间系统的单位阶跃响应214
8.5 z变换及逆z变换的MATLAB仿真215
8.5.1 z变换215
8.5.2 逆z变换216
8.6 离散系统z域描述的MATLAB仿真217
8.6.1 离散系统的频域分析217
8.6.2 离散系统的零极点与幅频响应分析219
8.6.3 离散系统的全响应222
习题8225
第9章 傅里叶变换的MATLAB仿真226
9.1 离散时间傅里叶变换的MATLAB仿真226
9.2 周期序列的离散傅里叶级数的MATLAB仿真227
9.3 离散傅里叶变换的MATLAB仿真228
9.3.1 离散傅里叶变换的定义及其物理意义228
9.3.2 DFT的应用231
9.4 快速傅里叶变换的MATLAB仿真238
习题9244
第10章 IIR滤波器设计的MATLAB仿真246
10.1 模拟滤波器的设计的MATLAB仿真246
10.1.1 巴特沃斯滤波器的设计246
10.1.2 切比雪夫I型滤波器的设计251
10.1.3 切比雪夫II型滤波器的设计256
10.1.4 椭圆滤波器的设计257
10.2 数字滤波器设计的MATLAB仿真259
10.2.1 冲激响应不变法259
10.2.2 双线性变换法260
10.3 IIR数字滤波器应用的MATLAB仿真263
习题10268
第11章 FIR滤波器设计的MATLAB仿真270
11.1 窗函数法设计的MATLAB仿真270
11.1.1 典型窗函数270
11.1.2 窗函数的应用277
11.2 FIR滤波器应用的MATLAB仿真282
习题11287
参考文献289