数字信号处理实验教程(基于MATLAB语言)范哲意编北京理工大学信号与图像处理研究所二0一四年十一月
数字信号处理实验教程 (基于 MATLAB 语言) 范哲意 编 二〇一四年十一月
数字信号处理实验教程一基于MATLAB语言目录实验1利用DFT分析信号频谱一、实验目的二、实验设备与环境三、实验基础理论1四、实验内容....3五、实验报告要求4实验2利用FFT计算线性卷积.5一、实验目的5二、实验设备与环境5三、实验基础理论.5四、实验内容8五、实验报告要求.8实验3IIR数字滤波器设计9一、实验目的.9二、实验设备与环境9三、实验基础理论9四、实验内容....9五、实验报告要求.9实验4FIR数字滤波器设计.1010一、实验目的..二、实验设备与环境..10三、实验基础理论.10四、实验内容..10..11五、实验报告要求附录1IIR数字滤波器设计方法概述.121.数字滤波器和模拟滤波器的一些指标12..132.模拟原型滤波器2.1巴特沃斯滤波器...13..182.2切比雪夫低通滤波器..212.3椭圆滤波器2.4三种滤波器的比较.213.模拟滤波器到数字滤波器的变按22I
数字信号处理实验教程—基于 MATLAB 语言 I 目 录 实验 1 利用 DFT 分析信号频谱. 1 一、实验目的.1 二、实验设备与环境.1 三、实验基础理论.1 四、实验内容.3 五、实验报告要求.4 实验 2 利用 FFT 计算线性卷积.5 一、实验目的.5 二、实验设备与环境.5 三、实验基础理论.5 四、实验内容.8 五、实验报告要求.8 实验 3 IIR 数字滤波器设计. 9 一、实验目的.9 二、实验设备与环境.9 三、实验基础理论.9 四、实验内容.9 五、实验报告要求.9 实验 4 FIR 数字滤波器设计.10 一、实验目的.10 二、实验设备与环境.10 三、实验基础理论.10 四、实验内容.10 五、实验报告要求.11 附录 1 IIR 数字滤波器设计方法概述. 12 1. 数字滤波器和模拟滤波器的一些指标. 12 2. 模拟原型滤波器.13 2.1 巴特沃斯滤波器.13 2.2 切比雪夫低通滤波器.18 2.3 椭圆滤波器.21 2.4 三种滤波器的比较.21 3. 模拟滤波器到数字滤波器的变换.22
数字信号处理实验教程一基于MATLAB语言223.1脉冲响应不变法..263.2双线性变换法...274.直接利用MATLAB函数设计IR数字滤波器附录2FIR数字滤波器设计方法概述.29..291.线性相位FIR数字滤波器.(1)线性相位条件:...2929(2)频率响应29(3)幅度函数..30.(4)利用MATLAB计算频率响应和幅度函数、相位函数2.窗函数法设计FIR数字滤波器32..353.频率取样法设计FIR数字滤波器...384.利用MATLAB函数设计FIR数字滤波器(1)firl函数38(2)fir2函数,38参考文献.40=
数字信号处理实验教程—基于 MATLAB 语言 II 3.1 脉冲响应不变法.22 3.2 双线性变换法.26 4. 直接利用 MATLAB 函数设计 IIR 数字滤波器.27 附录 2 FIR 数字滤波器设计方法概述. 29 1. 线性相位 FIR 数字滤波器. 29 (1)线性相位条件:.29 (2)频率响应.29 (3)幅度函数.29 (4)利用 MATLAB 计算频率响应和幅度函数、相位函数.30 2. 窗函数法设计 FIR 数字滤波器. 32 3. 频率取样法设计 FIR 数字滤波器. 35 4. 利用 MATLAB 函数设计 FIR 数字滤波器.38 (1) fir1 函数. 38 (2) fir2 函数. 38 参考文献. 40
数字信号处理实验教程一基于MATLAB语言实验1利用DFT分析信号频谱一、实验目的1.加深对DFT原理的理解。2.应用DFT分析信号的频谱。3.深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象及解决方法。二、实验设备与环境计算机、MATLAB软件环境。三、 实验基础理论1.DFT与DTFT的关系有限长序列x(n)(O≤n≤N-1)的离散时间傅里叶变换X(eje)在频率区间(O≤の≤2元)的N个等间隔分布的点kの=2元k/N(0≤k≤N-1)上的N个取样值可以由下式表示:21N-Ex(n)e-X(e=X(k)0≤k≤N-1(2-1)-9=2k/N=0由上式可知,序列x(n)的N点DFTX(k),实际上就是x(n)序列的DTFT在N个等间隔频率点kの=2元k/N(0≤k≤N-1)上样本X(k)。2.利用DFT求DTFT方法1:由X(k)恢复出X(ej)的方法如图2.1所示:X(ese)X(kc)x(n)IDFTDTFT图2.1由N点DFT恢复频谱DTFT的流程由图2.1所示流程可知:Zx(n)e-jomX(ejo)=X(k)WN1=-(2-2)由式2-2可以得到2元kx(eja)=x(k)p(0-(2-3)Nkol其中(x)为内插函数I
数字信号处理实验教程—基于 MATLAB 语言 1 实验 1 利用 DFT 分析信号频谱 一、实验目的 1. 加深对 DFT 原理的理解。 2. 应用 DFT 分析信号的频谱。 3. 深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。 二、实验设备与环境 计算机、MATLAB 软件环境。 三、实验基础理论 1. DFT 与 DTFT 的关系 有 限 长 序 列 x(n)(0 n N 1) 的 离 散 时 间 傅 里 叶 变 换 ( ) j X e 在 频 率 区 间 (0 2 ) 的 N 个等间隔分布的点 k 2k N (0 k N 1)上的 N 个取样值可以由 下式表示: ( ) ( ) ( ) 0 1 1 0 2 2 X e x n e X k k N N k kn N j k N j (2-1) 由上式可知,序列 x(n) 的 N 点 DFT X (k) ,实际上就是 x(n) 序列的 DTFT 在 N 个 等间隔频率点 k 2k N (0 k N 1)上样本 X (k) 。 2. 利用 DFT 求 DTFT 方法 1:由 X (k) 恢复出 ( ) j X e 的方法如图 2.1 所示: 图 2.1 由 N 点 DFT 恢复频谱 DTFT 的流程 由图 2.1 所示流程可知: j n n N k kn N n j j n X k W e N X e x n e 1 0 ( ) 1 ( ) ( ) (2-2) 由式 2-2 可以得到 N k j N k x e X k 1 ) 2 ( ) ( ) ( (2-3) 其中(x) 为内插函数
数字信号处理实验教程一基于MATLAB语言(0) = Sin(No/2).a-Je4l(2-4)Nsin(の/2)方法2:然而在实际MATLAB计算中,上述插值运算不见得是最好的办法。由于DFT是DTFT的取样值,其相邻两个频率样本点的间距为2元/N,所以如果我们增加数据的长度N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT来近似计算DTFT。如果没有更多的数据,可以通过补零来增加数据长度。3.利用DFT分析连续时间信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行两个操作:一是采样,二是截断。对于连续时间非周期信号x。(t),按采样间隔T进行采样,截取长度为M,那么MsX(j2)=.()e-dt=T2.(nT)e-0mr(2-5)n=0对X。(j2)进行N点频域采样,得到MjknX.(j2)0=TZx(nT)e=TX(k)(2-6)NTn=0因此,可以将利用DFT分析连续非周期信号频谱的步骤归纳如下:(1)确定时域采样间隔T,得到离散序列x(n);(2)确定截取长度M,得到M点离散序列xm(n)=x(n)w(n),这里w(n)为窗函数。(3)确定频域采样点数N,要求N≥M。(4)利用FFT计算离散序列的N点DFT,得到XM(k)。(5)根据式(2-6)由X(k)计算X。(j2)采样点的近似值。采用上述方法计算x()的频谱,需要注意如下三个问题:(1)频谱混叠。如果不满足采样定理的条件,频谱会出现混叠误差。对于频谱无限宽的信号,应考虑覆盖大部分主要频率分量的范围。(2)栅栏效应和频谱分辨率。使用DFT计算频谱,得到的结果只是N个频谱样本值,样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应”。频谱分辨率与记录长度成反比,要提高频谱分表率,就要增加记录时间。(3)频谱泄露。对信号截断会把窗函数的频谱引入信号频谱,照成频谱泄露。解决这个问题的主要办法是采用旁瓣小的窗函数,频谱泄露和窗函数均会引起误差。因此,要合理选取采样间隔和截取长度,必要时还需考虑加适当的窗。对于连续时间周期信号,我们在采用计算机进行计算时,也总是要进行截断,序列总是有限长的,仍然可以采用上述方法近似计算。2
数字信号处理实验教程—基于 MATLAB 语言 2 2 1 sin( / 2) sin( / 2) ( ) N j e N N (2-4) 方法 2:然而在实际 MATLAB 计算中,上述插值运算不见得是最好的办法。由于 DFT 是 DTFT 的取样值,其相邻两个频率样本点的间距为 2 N ,所以如果我们增加数据的长度 N ,使得到的 DFT 谱线就更加精细,其包络就越接近 DTFT 的结果,这样就可以利 用 DFT 来近似计算 DTFT。如果没有更多的数据,可以通过补零来增加数据长度。 3. 利用 DFT 分析连续时间信号的频谱 采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这 里需要进行两个操作:一是采样,二是截断。 对于连续时间非周期信号 x (t) a ,按采样间隔 T 进行采样,截取长度为 M ,那么 1 0 ( ) ( ) ( ) M n j nT a j t a a X j x t e dt T x nT e (2-5) 对 X ( j) a 进行 N 点频域采样,得到 ( ) ( ) ( ) 1 0 2 X j 2 T x nT e TX k M M n kn N j a NT a k (2-6) 因此,可以将利用 DFT 分析连续非周期信号频谱的步骤归纳如下: (1)确定时域采样间隔 T ,得到离散序列 x(n) ; (2)确定截取长度 M ,得到 M 点离散序列 x (n) x(n)w(n) M ,这里 w(n)为窗 函数。 (3)确定频域采样点数 N ,要求 N M 。 (4)利用 FFT 计算离散序列的 N 点 DFT,得到 X (k) M 。 (5)根据式(2-6)由 X (k) M 计算 X ( j) a 采样点的近似值。 采用上述方法计算 x (t) a 的频谱,需要注意如下三个问题: (1)频谱混叠。如果不满足采样定理的条件,频谱会出现混叠误差。对于频谱 无限宽的信号,应考虑覆盖大部分主要频率分量的范围。 (2)栅栏效应和频谱分辨率。使用 DFT 计算频谱,得到的结果只是 N 个频谱样 本值,样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应”。 频谱分辨率与记录长度成反比,要提高频谱分表率,就要增加记录时间。 (3)频谱泄露。对信号截断会把窗函数的频谱引入信号频谱,照成频谱泄露。 解决这个问题的主要办法是采用旁瓣小的窗函数,频谱泄露和窗函数均会引起误差。 因此,要合理选取采样间隔和截取长度,必要时还需考虑加适当的窗。 对于连续时间周期信号,我们在采用计算机进行计算时,也总是要进行截断, 序列总是有限长的,仍然可以采用上述方法近似计算