第1章 Z变换和离散傅里叶变换 1
1.1 Z变换 1
1.1.1 Z变换的表示式 1
1.1.2 Z变换的收敛域 3
1.1.3 基本Z变换对 4
1.1.4 线性系统的Z变换 5
1.1.5 Z变换特性 5
1.1.6 Z逆变换 6
1.2 DFT的由来 9
1.3 DFT的性质 13
参考文献 15
第2章 快速傅里叶变换和频谱分析 16
2.1 快速傅里叶变换(FFT) 16
2.1.1 基2时间抽取FFT算法 17
2.1.2 基2频率抽取FFT算法 19
2.1.3 快速傅里叶逆变换(IFFT)算法 22
2.1.4 案例2.1:快速傅里叶变换的MATLAB函数 22
2.1.5 案例2.2:如何经IFFT后得到实数序列 26
2.1.6 案例2.3:如何使实数序列在时间域上位移后也为实数序列 31
2.2 离散信号的谱分析 38
2.2.1 案例2.4:频谱图中频率刻度(横坐标)的设置 39
2.2.2 案例2.5:如何计算正弦信号的幅值和初始相角 42
2.2.3 案例2.6:怎样认识一个单频的正弦信号的相位谱 45
2.2.4 案例2.7:为什么FFT后得到的频谱大部分都为0 48
2.2.5 案例2.8:如何把频谱图的纵坐标设置为分贝刻度 50
2.2.6 频谱分析过程中的混叠现象、栅栏现象和泄漏现象 53
2.2.7 案例2.9:同样经矩形窗截断,为什么有的发生泄漏而有的没有发生泄漏 56
2.2.8 窗函数 58
2.2.9 案例2.10:加窗函数后频谱幅值变了,如何修正 61
2.2.10 分辨率 63
2.2.11 案例2.11:如何选择采样频率和信号长度 65
2.2.12 案例2.12:FFT中的补零问题 67
2.2.13 快速卷积和快速相关 73
2.2.14 案例2.13:能否用循环相关计算延迟量 79
参考文献 84
第3章 数字滤波器的设计 85
3.1 数字滤波器基础 85
3.1.1 数字滤波器的传递函数 85
3.1.2 数字滤波器的频率响应分析 87
3.1.3 数字滤波器的分类 88
3.1.4 数字滤波器的构成 90
3.2 典型模拟低通滤波器 93
3.2.1 巴特沃斯模拟低通滤波器 93
3.2.2 切比雪夫Ⅰ型和Ⅱ型模拟低通滤波器 94
3.2.3 椭圆型模拟低通滤波器 96
3.2.4 模拟原型低通滤波器的频率变换 97
3.2.5 模拟滤波器设计的MATLAB函数 97
3.2.6 案例3.1:巴特沃斯、切比雪夫Ⅰ型、切比雪夫Ⅱ型和椭圆型滤波器的相同和不同之处 102
3.2.7 案例3.2:设计模拟滤波器的几种编程方法的相同和不同之处 104
3.2.8 案例3.3:在频带变换的模拟滤波器设计中,怎样计算Wn和Bs 105
3.3 利用脉冲响应不变法设计IIR数字滤波器 107
3.3.1 脉冲响应不变法变换原理 107
3.3.2 模拟滤波器的数字化方法 108
3.3.3 混叠失真 109
3.3.4 用脉冲响应不变法设计数字滤波器的优缺点 110
3.4 利用双线性变换法设计IIR数字滤波器 111
3.4.1 双线性变换法的变换原理 111
3.4.2 双线性变换法的优缺点 113
3.4.3 利用双线性变换法设计数字滤波器的步骤 114
3.5 陷波器与全通滤波器 115
3.5.1 陷波器 115
3.5.2 全通滤波器 116
3.6 IIR数字滤波器设计的MATLAB函数 118
3.7 IIR滤波器设计的案例 123
3.7.1 案例3.4:用留数求得脉冲不变法数字滤波器与调用impinvar函数得到的是否一样 123
3.7.2 案例3.5:在调用bilinear函数时为何有的Fs处用实际频率值,有的却用Fs=1 125
3.7.3 案例3.6:为什么不能用impinvar函数 128
3.7.4 案例3.7:为什么滤波器的输出会溢出或没有数值 131
3.7.5 案例3.8:用bilinear函数时,如果Wp和Ws都没有先做预畸会有什么结果 137
3.7.6 案例3.9:如何把任意S系统转换为Z系统 138
3.7.7 案例3.10:把滤波器的滤波过程用差分方程的运算来完成 142
3.7.8 案例3.11:滤波函数filter的调用格式为[y,zf]=filter(b,a,x,zf),其中的zi和zf有何作用 148
3.7.9 案例3.12:如何使用数字陷波器滤除工频信号 151
3.7.10 案例3.13:如何设计数字全通滤波器对IIR滤波器进行相位补偿 153
3.7.11 案例3.14:为什么零相位滤波在起始和结束两端都受瞬态效应的影响 154
3.8 线性相位与FIR系统的相位特性 158
3.9 FIR型数字滤波器的窗函数设计法 161
3.9.1 理想数字滤波器的单位脉冲响应 162
3.9.2 FIR型数字滤波器的矩形窗设计法 162
3.9.3 窗函数设计法 165
3.10 FIR型数字滤波器的频率采样设计法 167
3.10.1 预期频率特性的设置方法 167
3.10.2 频率采样法的设计过程 167
3.10.3 频率采样法的改进 168
3.11 最优等波纹FIR滤波器的设计 169
3.11.1 最小最大化问题的设计 170
3.11.2 对极值数目的限制 171
3.11.3 Parks-McClellan算法 172
3.12 FIR滤波器设计中的MATLAB函数 172
3.13 FIR滤波器设计的案例 176
3.13.1 案例3.15:在窗函数法设计FIR中如何选择窗函数和阶数N 176
3.13.2 案例3.16:用ideal_lp函数和firl函数设计的滤波器是否相同 178
3.13.3 案例3.17:用凯泽窗设计FIR滤波器的优点 181
3.13.4 案例3.18:为什么FIR滤波器不适用于设计数字陷波器 183
3.13.5 案例3.19:通过FIR滤波器的输出,延迟量如何校正 185
3.13.6 案例3.20:通过fir2函数设计任何响应的FIR滤波器 188
3.13.7 案例3.21:通过firpm函数设计的FIR滤波器为什么达不到指标要求 190
3.13.8 案例3.22:如何设计多频带的FIR滤波器 194
3.13.9 案例3.23:如何用FIR滤波器设计数字微分器 197
3.13.10 案例3.24:如何用FIR滤波器设计数字希尔伯特变换器 198
3.14 用FDATool设计数字滤波器 200
3.14.1 IIR滤波器设计 200
3.14.2 FIR滤波器设计 209
3.14.3 SOS系数的进一步说明 211
3.14.4 案例3.25:如何把SOS或Hd转变为滤波器的系数 212
3.15 用fdesign和design设计数字滤波器 215
3.15.1 案例3.26:为什么在使用design函数时常会出现“invalid design method” 222
3.15.2 案例3.27:用fdesign+design的方法与前几节介绍的经典方法设计的滤波器是否相同 226
3.15.3 案例3.28:用fdesign+design方法有什么优点 230
3.16 三分之一倍频程滤波器 233
3.16.1 案例3.29:以FFT-IFFT分析方法求出三分之一倍频程滤波器各频带的声压级 234
3.16.2 案例3.30:以降采样方法求出三分之一倍频程滤波器各频带的声压级 237
3.16.3 案例3.31:用fdesign+design方法求出三分之一倍频程滤波器各频带的声压级 240
参考文献 242
第4章 信号处理中简单实用的方法 243
4.1 最小二乘法拟合消除趋势项 243
4.1.1 消除趋势项函数 244
4.1.2 案例4.1:基线漂移的修正 244
4.2 寻找信号中的峰值和谷值 247
4.2.1 MATLAB中峰谷值检测的函数 247
4.2.2 案例4.2:已知一个脉动信号,如何求信号的周期 248
4.2.3 案例4.3:如何利用findpeaks函数求谷值 249
4.2.4 案例4.4:在findpeakm函数用q参数时如何进行内插 251
4.3 信号中包络的提取 256
4.3.1 希尔伯特变换 256
4.3.2 案例4.5:用希尔伯特变换计算信号的包络 259
4.3.3 案例4.6:用求极大值和极小值的方法来计算信号的包络线 262
4.3.4 案例4.7:用倒谱法来计算语音信号频谱的包络线 266
4.4 提取信号中的特殊区间 268
4.4.1 寻找特殊区间的MATLAB函数 268
4.4.2 案例4.8:如何从一组数据中取得波谷的开始位置和结束位置 269
4.5 平滑处理 272
4.5.1 案例4.9:五点三次平滑法 272
4.5.2 案例4.10:在带噪数据中如何寻找极小值——介绍MATLAB自带的平滑函数smooth 274
4.5.3 案例4.11:在Savitzky-Golay平滑滤波时如何选择窗长和阶数 278
4.6 数据的延拓 282
4.6.1 自回归模型的基本理论 282
4.6.2 前向预测与后向预测 284
4.6.3 前向预测与后向预测的MATLAB函数 285
4.6.4 案例4.12:如何消除信号经零相位滤波后两端的瞬态效应 287
4.6.5 案例4.13:消除希尔伯特变换的端点效应 289
参考文献 291
第5章 DFT的拓展 292
5.1 短时傅里叶变换 292
5.1.1 短时傅里叶变换和短时傅里叶逆变换 292
5.1.2 短时傅里叶变换的MATLAB函数 293
5.1.3 案例5.1:调用tfrstft函数后用什么方法作STFT的谱图 295
5.1.4 案例5.2:如何通过spectrogram得到一些特定频率的频谱 303
5.1.5 案例5.3:能否对信号的STFT谱图再逆变换转成时间序列 308
5.2 细化FFT(Zoom-FFT) 310
5.2.1 经典的复调制频谱细化分析方法 310
5.2.2 复解析带通滤波器的复调制频谱细化分析方法 312
5.2.3 细化频谱分析的MATLAB函数 316
5.2.4 案例5.4:在函数exzfft_ma中频率刻度是如何计算的 318
5.2.5 案例5.5:如何利用细化频谱提取间谐波的频率 321
5.3 线性调频Z变换(CZT) 322
5.3.1 线性调频Z变换的原理 322
5.3.2 MATLAB的线性调频Z变换函数 324
5.3.3 案例5.6:CZT能细化频谱吗 324
5.4 Goertzel算法 329
5.4.1 Goertzel算法简介 329
5.4.2 DTMF信号简介 331
5.4.3 Goertzel算法对DTMF的应用 332
5.4.4 Goertzel算法和DTMF编解码的MATLAB函数 333
5.4.5 案例5.7:如何产生DTMF编码和如何利用Goertzel算法在带噪DTMF中提取出数值 334
参考文献 342
第6章 DFT的内插 344
6.1 狄里克莱核与窗函数 344
6.1.1 连续信号与加矩形窗相乘的傅里叶变换 344
6.1.2 连续信号离散化 344
6.1.3 离散矩形窗序列与狄里克莱核 345
6.1.4 余弦窗函数及其离散傅里叶变换 347
6.2 比值法校正 347
6.2.1 矩形窗的比值法校正 347
6.2.2 汉宁窗的比值法校正 349
6.2.3 比值校正法的MATLAB函数 350
6.2.4 案例6.1:如何消除信号中正弦信号的干扰 352
6.3 能量重心校正法 356
6.3.1 能量重心法校正频率、幅值和相角的原理 357
6.3.2 能量重心校正法的MATLAB函数 358
6.3.3 案例6.2:能量重心校正法与比值校正法的比较 359
6.4 相位差校正法 360
6.4.1 时域平移相位差校正法 361
6.4.2 改变窗长的相位差校正法 363
6.4.3 通用相位差法 363
6.4.4 相位差的校正计算公式 365
6.4.5 通用相位差校正法的MATLAB函数 366
6.4.6 案例6.3:旋转机械的振动测试 367
6.4.7 案例6.4:感应电机转子故障电流的分析 369
6.4.8 案例6.5:ZFFT分析后的相位差校正法 373
6.5 全相位校正技术 375
6.5.1 全相位的数据结构和预处理 375
6.5.2 全相位中的卷积窗函数 377
6.5.3 全相位FFT谱分析 377
6.5.4 FFT/apFFT综合相位差校正法 379
6.5.5 全相位时移相位差法校正法 379
6.5.6 全相位校正技术的MATLAB函数 380
6.5.7 案例6.6:传统FFT相位差校正法与FFT/apFFT综合相位差校正法、全相位时移相位差校正法比较 383
参考文献 386
第7章 谐波分析 387
7.1 窗函数的进一步介绍 387
7.1.1 Blackmarn-Harris窗函数 388
7.1.2 Rife-Vincent窗函数 389
7.1.3 Nuttall窗函数 390
7.2 单峰谱线插值算法 390
7.2.1 单峰谱线插值算法原理 390
7.2.2 基于多项式逼近的单峰谱线插值 391
7.2.3 常用窗函数单峰谱线的修正公式 392
7.2.4 案例7.1:如何求不同余弦窗函数单峰修正法中α=g-1(β)的系数和λ(γ)的系数 393
7.2.5 案例7.2:用不同窗函数对一组谐波数据进行计算比较 397
7.3 双峰谱线插值算法 401
7.3.1 双峰谱线插值算法原理 401
7.3.2 基于多项式逼近的双峰谱线插值 401
7.3.3 常用窗函数双峰谱线的修正公式 402
7.3.4 案例7.3:怎么求出不同余弦窗函数双峰修正法中α=g-1(β)的系数和v(γ)的系数 403
7.3.5 案例7.4:用不同窗函数对一组谐波数据进行计算比较 405
7.4 Prony法 411
7.4.1 Prony法原理 411
7.4.2 Prony法的MATLAB函数 412
7.4.3 案例7.5:能否用Prony法分析处理谐波信号 413
7.4.4 案例7.6:用Prony法分析处理暂态信号 416
参考文献 420
第8章 功率谱的估算 422
8.1 平稳随机信号及其特征描述 422
8.2 非参数法的功率谱估计 427
8.2.1 相关图法 427
8.2.2 周期图法 428
8.2.3 周期图法的改进(一):平滑单一周期图 429
8.2.4 周期图法的改进(二):多个周期图求平均 430
8.2.5 非参数法功率谱估计的MATLAB函数 431
8.2.6 案例8.1:求功率谱密度时,调用FFT与调用periodogram函数有何差别 434
8.2.7 案例8.2:对周期图法和自相关法求出的功率谱进行比较 435
8.2.8 案例8.3:对周期图法和改进周期图法求出的功率谱进行比较 437
8.2.9 案例8.4:已知功率谱密度,能否求出对应的时域信号 438
8.3 参数法的功率谱估计 442
8.3.1 最大熵法 443
8.3.2 自相关法 444
8.3.3 协方差法 445
8.3.4 Burg算法估计法 445
8.3.5 改进的协方差估计法 447
8.3.6 AR模型阶数的确定 448
8.3.7 AR模型功率谱密度估算的MATLAB函数 449
8.3.8 案例8.5:比较四种AR模型功率谱密度估算的方法 451
8.4 MATLAB中通用的功率谱估算函数 453
8.4.1 通用功率谱估算函数spectrum和psd的介绍 453
8.4.2 案例8.6:用传统功率谱函数和用spectrum+psd函数有何差别 458
8.5 传递函数和相干函数的估算 462
8.5.1 传递函数和相干函数的估算方法 463
8.5.2 MATLAB中的传递函数和相干函数 464
8.5.3 案例8.7:已知输入和输出序列,如何求传递函数 465
8.5.4 案例8.8:用求自谱和互谱的方法求得相干函数与调用mscohere函数得到的相干函数是否有差别 466
8.5.5 案例8.9:调用mscohere函数时其中的参数如何选择 470
参考文献 473
附 录 MATLAB函数速查表 474