数字信号处理实验指导书
中国科学技术大学
电子工程与信息科学系
2025年9月
目录
实验1 连续信号的离散化
1.1 实验目的
1.2 实验原理
1.3 实验内容
1.4 实验报告要求
实验2 栅栏效应
2.1 实栅栏效应,是对频域离散化现象的一个形象化描述,指DFT的频谱呈现在基频的整数倍处,只能在相应离散点处看到输出的现象。这像通过一个"栅栏"来观看图景一样,只能在离散点处看到真实图景。
2.3 实验内容
2.2 实验原理
2.3 实验内容
2.4 实验报告要求
实验3 频谱泄漏
3.1 实验目的
3.2 实验原理
3.3 实验内容
3.4 实验报告要求
实验4 FFT算法
4.1 实验目的
4.2 实验原理
4.3 实验内容
4.4 实验报告要求
实验5 信号通过IIR滤波器
5.1 实验目的
5.2 实验原理
5.3 实验内容
5.4 实验报告要求
实验6 窗函数
6.1 实验目的
6.2 实验原理
6.3 实验内容
6.4 实验报告要求
实验7 FIR滤波器的窗函数设计方法
7.1 实验目的
7.2 实验原理
7.3 实验内容
7.4 实验报告要求
实验8 线性相位系统
8.1 实验目的
8.2 实验原理
8.3 实验内容
8.4 实验报告要求
实验1 连续信号的离散化
1.1 实验目的
(1)探究连续时间信号与时间取样序列之间的关系,取样前后的变化。
(2)理解取样操作的本质,是希望取样序列能够承载和表达原信号的所有信息。
(3)对比原信号频谱实验内容
(4)理解奈奎斯特取样准则的物理意义及初步运用,掌握如何针对实际信号选择合适的取样频率。
1.2 实验原理
连续时间傅里叶变换(CFT)的一般表达式为 $$X(j\Omega)=\int_{-\infty}^{\infty}x(t)e^{-j\Omega t}dt$$
其反变换的一般表达式为 $$x(t)=\frac{1}{2\pi}\int_{-\infty}^{\infty}X(j\Omega)e^{j\Omega t}d\Omega$$
离散时间傅里叶变换(DTFT)的一般表达式为 $$X(e^{j\omega})=\sum_{n=-\infty}^{\infty}{x(n)}e^{-j\omega n}$$
其反变换的一般表达式为 $$x(n)=\frac{1}{2\pi}\int_{-\pi}^{\pi}{X(e^{j\omega})e^{j\omega n}d\omega}$$
主要内容:
1)对 $x(t)$ 做CFT,记录观察频谱的幅频特性;
2)对 $x(t)$ 做时域离散化得到 $x(n)$,对 $x(n)$ 做DTFT,记录观察幅频特性;
3)在不同的取样频率下,对比分析取样前后的幅频特性变化,理解奈奎斯特取样原理
1.3 实验内容
(0)学习Matlab函数。
[1-1] 在命令行窗口(Command Window)输入“doc fplot”,查看fplot函数的帮助信息和使用示例。
[1-2] 按照上述方法查看syms、eval、fourier、subplot等的帮助信息和使用示例。
[1-3] 依次观察如下3个示例的结果。
| |
(1)设 $x_1(t)=\frac{\sin{2\pi f_h t}}{t}$,$f_h=10Hz$。
[1-3] 观察如下示例的结果。
①依据 $x_1(t)$ 的CFT表达式,画出幅频特性图,观察 $x_1(t)$ 的幅度谱,带宽是否受限并有确定的最高频率 $f_h$,根据奈奎斯特取样准则确定合适的取样频率 $f_s$。
②在以下5个取样频率 $f_s$ 下:$0.3f_h$、$0.6f_h$、$1.2f_h$、$1.8f_h$、$2.4f_h$,分别对 $x_1(t)$ 进行时域取样,形成取样序列 $x_1(n)$,对 $x_1(n)$ 进行DTFT。依据 $x_1(n)$ 的DTFT表达式,画出幅频特性图,观察 $x_1(n)$ 的幅度谱,与 $x_1(t)$ 的幅度谱进行对比和分析讨论。
③作图要求幅度归一化,频率单位为Hz。$x_1(t)$ 幅度谱的频率范围为0~120Hz,$x_1(n)$ 幅度谱的频率范围为 $0~f_s$。
(2)设 $x_2(t)=e^{-100t}\sin{(2\pi f_q t)}$,$f_q=100Hz$。
①使用MATLAB内置的fourier函数对 $x_2(t)$ 进行CFT,并画出幅频特性图,观察 $x_2(t)$ 的幅度谱,观察 $x_2(t)$ 带宽是否无限、高频段的幅度是否有明显衰减,并根据频谱能量95%的近似原则确定合适的取样频率 $f_s$。
②取样频率 $f_s$ 取 $f_q$、$4f_q$、$6f_q$、$10f_q$ 时,分别对 $x_2(t)$ 进行时域取样,形成不同的取样序列 $x_2(n)$,对 $x_2(n)$ 分别进行DTFT,并画出幅频特性图。随着取样频率 $f_s$ 的增加,观察 $X_2(e^{j\omega})$ 频谱混叠现象的变化情况,并分析讨论。
③要求幅度归一化,频率单位为Hz。$x_2(t)$ 幅度谱的频率范围为0~400Hz,$x_2(n)$ 幅度谱的频率范围为 $0~f_s$。
1.4 实验报告要求
(1)记录实验内容中要求观察、分析、比较的内容,并对结果进行分析。
(2)归纳实验中的各种现象,总结自己的结论。
实验2 栅栏效应
2.1 实验目的
(1)理解栅栏效应是连续频谱取样离散化之后呈现的一种视觉现象。
(2)理解在离散傅里叶变换(DFT)的定义下,栅栏效应呈现的不是误差,与频谱泄漏不同。
2.2 实验原理
栅栏效应,是对频域离散化现象的一个形象化描述,指DFT的频谱呈现在基频的整数倍处,只能在相应离散点处看到输出的现象。这像通过一个“栅栏”来观看图景一样,只能在离散点处看到真实图景。
实验内容
(1)设置N点离散序列 $x(n)=[1,1,0,1]$。
(2)对 $x(n)$ 分别做DTFT和DFT,画出 $X(e^{j\omega})$ 和 $X(k)$ 的幅频特性曲线,观察描述栅栏效应现象。
DTFT 的一般表达式为:
$$X(e^{j\omega}) = \sum_{n=-\infty}^{\infty} x(n) e^{-j\omega n}, \quad -\infty < \omega < \infty$$
DFT 的一般表达式为:
$$X(k) = \sum_{n=0}^{N-1} x(n) e^{-j\frac{2\pi}{N}nk}, \quad k = 0, 1, 2, \dots, N-1$$
(3)用 $X(k)$ 和内插函数重建 $X(e^{j\omega})$:
$$\hat{X}(e^{j\omega}) = \frac{1}{N} \sum_{k=0}^{N-1} X(k) \cdot \frac{1 - e^{-j\omega N}}{1 - W_N^{-k} e^{-j\omega}}$$
画出 $\hat{X}(e^{j\omega})$ 的幅频特性曲线,并与 $X(e^{j\omega})$ 的幅频特性曲线进行比较讨论。
2.4 实验报告要求
(1)记录实验内容中要求观察、分析、比较的内容,并对结果进行分析。
(2)总结实验中根据实验现象得到的其他结论。
实验3 频谱泄漏
3.1 实验目的
(1)理解这里的误差(偏差)概念,是指处理之后相对于处理之前的变化。
(2)理解 $x(n)$ 如何通过DFT来反映表达 $x(t)$ 的频谱情况。
(3)频谱泄漏是指离散序列 $x(n)$ DFT相对于原信号 $x(t)$ 在频谱上多显示出的频率成分。
(4)产生频谱泄漏的根本原因,是对原信号 $x(t)$ 的截短;信号截短之后,相对于截短之前的原信号一定发生泄漏,与时域离散化无关,与DFT无关。
(6)理解DFT对频谱泄漏的呈现形态,与DTFT频谱离散化的频率取样点位置方式有关。
3.2 实验原理
1)对 $x(t)$ 做CFT,记录观察频谱的幅频特性;
2)对 $x(t)$ 在时域上截短,记录观察频谱的幅频特性;
3)对截短后连续信号离散化得到 $x(n)$,对 $x(n)$ 做DTFT,记录观察幅频特性。
3.3 实验内容
设 $x(t)=e^{j2\pi f_1 t}+e^{j2\pi f_2 t}$,式中 $f_1=24Hz$,$f_2=60Hz$。
(1)对 $x(t)$ 做CFT并进行幅度归一化,给出 $X(j\Omega)$ 表达式,说明其幅频特性。
(2)判断 $x(t)$ 是否为周期函数。如果是,则确定 $x(t)$ 的最小周期 $T_0$ 和基频 $\Omega_0$,对 $x(t)$ 进行FS展开,给出 $X(m\Omega_0)$ 表达式,说明其幅频特性,并与上述CFT的结果进行比较讨论。
(3)对 $x(t)$ 用矩形窗截短,得到 $x_1(t)$。矩形窗宽度的选择,分为两种情况:矩形窗宽度等于 $x(t)$ 最小周期 $T_0$ 的整倍数(记为 $R_1$);矩形窗宽度不等于 $x(t)$ 最小周期 $T_0$ 的整倍数(记为 $R_2$)。
在 $R_1$ 和 $R_2$ 两种宽度下,对 $x_1(t)$ 分别做CFT,画出 $X_1(j\Omega)$ 的幅频特性曲线,并与 $X(j\Omega)$ 的幅频特性进行比较讨论。
(4)分别取 $f_{s1}$,$f_{s2}$,在 $R_1$ 和 $R_2$ 两种宽度下,对 $x_1(t)$ 进行离散化,对取样序列 $x_1(n)$ 做DTFT。画出 $X_1(e^{j\omega})$ 幅频特性曲线(频域表示范围取两个周期),并与 $X(j\Omega)$ 和 $X_1(j\Omega)$ 的幅频特性进行比较讨论。其中:
$f_{s1}=\frac{1}{2T_0}$,$f_{s2}=\frac{1}{1.6T_0}$
(5)在 $R_1$ 和 $R_2$ 两种宽度下,对 $x_1(n)$ 做DFT,画出 $X_1(k)$ 完整的幅频特性曲线($k=0,1,…,N-1$),并与 $X_1(e^{j\omega})$、$X(j\Omega)$ 和 $X_1(j\Omega)$ 的幅频特性进行比较讨论。
(6)在 $R_1$ 和 $R_2$ 两种宽度下,对 $x_1(n)$ 补两倍长度于自身的零值形成延长序列 $x_2(n)$。对 $x_2(n)$ 做DFT,画出 $X_2(k)$ 完整的幅频特性曲线($k=0,1,…,N-1$),并与 $X_1(k)$、$X_1(e^{j\omega})$、$X(j\Omega)$ 和 $X_1(j\Omega)$ 的幅频特性进行比较讨论。
3.4 实验报告要求
(1)记录实验内容中要求观察、分析、比较的内容,并对结果进行分析。
(2)总结实验中根据实验现象得到的其他结论。
实验4 FFT算法
4.1 实验目的
(1)加深对快速傅里叶变换(FFT)的理解。
(2)实际编程实现 FFT 算法。
4.2 实验原理
编程实现一个16点DFT的基-2快速算法。
4.3 实验内容
设 $x(n)=2\sin{(\frac{\pi}{4}n)}+\sin{(\frac{5\pi}{8}n)}+3\sin{(\frac{3\pi}{4}n)}$,$n=0,1,2,…,15$。
(1)对序列 $x(n)$ 做DFT,使用MATLAB内置的stem函数画出幅度谱。
(2)编制按时间抽取的基2FFT算法程序,要求顺序输入、反序输出,对序列 $x(n)$ 做FFT。在命令行输出反序结果的幅度值,并将输出结果从反序转换为顺序,画出幅度谱。
4.4 实验报告要求
(1)总结编写程序实现FFT算法的思路。
(2)记录实验中要求观察、分析、比较的内容,并对结果进行分析。
(3)总结实验中根据实验现象得到的其它结论。
实验5 信号通过IIR滤波器
5.1 实验目的
(1)理解系统对信号的作用、输入信号与输出信号的关系。
(2)任何复杂信号都可以看成是不同频率的简单正弦信号叠加的结果。
5.2 实验原理
观察一个矩形波信号通过低通滤波器。通过设置滤波器不同的截止频率,可以看到矩形波信号时域波形的变化。随着截止频率的升高,时域波形越接近矩形。
5.3 实验内容
(1)设计一个IIR低通滤波器。通带起伏小于1dB,止带衰减大于40dB,过渡带宽小于 $0.1\pi$,通带截止频率为 $\omega_p(n)=r\cdot 2\pi/N$,其中 $r$ 分别取5,10,15,20,40,$N=100$。
提示:IIR滤波器的设计可以使用MALTAB内置的buttord和butter函数。
(2)生成一个周期为 $N=100$ 的矩形信号序列 $x(n)$,
$$x(n)=\begin{cases} 1, & 0 \le n \le \frac{N}{2}-1 \\ 0, & \frac{N}{2} \le n \le N-1 \end{cases}$$
取10个周期长度,激励(1)中设计的低通滤波器(可使用MATLAB内置的filtfilt函数模拟该过程),得到输出序列 $y(n)$,并计算 $x(n)$ 和 $y(n)$ 的幅频特性。
(3)观察和比较滤波器取不同截止频率时,$x(n)$、$y(n)$ 的时域波形、幅频特性的变化,特别是方波棱角的变化(时域波形画出第2到第5个周期即可)。
(4)采用双线性变换法设计一个数字切比雪夫I型高通滤波器。当 $\omega \le 0.2\pi$ 内,衰减大于15dB; 当 $0.3\pi \le \omega \le \pi$ 时,衰减小于1dB。并观察 $x(n)$ 通过该高通滤波器后输出 $y_{hp}(n)$ 的时域波形,并对比(3)中不同截止频率时输出时域波形与 $y_{hp}(n)$ 叠加后的波形(即 $y(n)+y_{hp}(n)$ 的时域波形)。
5.4 实验报告要求
(1)记录实验内容中要求观察、分析、比较的内容,并对结果进行分析。
(2)总结实验中根据实验现象得到的其他结论。
实验6 窗函数
6.1 实验目的
(1)理解窗函数的基本性能,掌握主瓣宽度与旁辦电平的控制原则。
(2)探究两类相位特性对信号处理的影响。
6.2 实验原理
1)用窗函数截取序列做DFT分析,频谱泄露体现在宽阔的主瓣和旁瓣上;
2)控制窗函数的主瓣宽度和旁瓣电平,可以控制改善泄露对信号频谱识别的影响;
3)当幅度相差较大的两个信号同时存在时,需要仔细设计窗函数的主瓣宽度和旁瓣电平,以免弱信号淹没在强信号的旁瓣或主瓣中。
6.3 实验内容
(1)设 $x_1(n)=31.6e^{j\frac{3\pi}{7}n}+0.005e^{j\frac{4\pi}{5}n}$,$0\le n\le 1023$。
分别使用矩形窗、Hamming窗对 $x_1(n)$ 做DFT得到 $X_1(k)$,画出幅度谱,用分贝(dB)表示,并比较分析。
矩形窗的低频旁瓣幅度应超过高频分量,Hamming窗的低频旁瓣幅度应低于高频分量。
提示:
窗函数的产生可以利用MATLAB中的window(r2021之前版本为dsp.Window),或者可以直接调用MATLAB内置的boxcar、hanning、hamming和blackman函数,具体使用方法请查阅MATLAB文档;DFT计算可以调用MATLAB内置的fft函数,fft点数取2N,fft函数的具体使用方法可查阅MATLAB文档。
②幅度谱的分贝公式:$dB=20\lg{(\text{amplitude})}$。
(2)设 $x_2(n)=31.6e^{j\frac{3\pi}{7}n}+10e^{j\left(\frac{1}{7}+\frac{1}{1024}\right)3\pi n}$,$0\le n\le N-1$。
使用Blackman窗,分别在 $N=1024$ 和 $N=2048$ 两种情况下,对 $x_2(n)$ 做DFT得到 $X_2(k)$,画出幅度谱,并比较分析。
$N=1024$ 时,高频分量淹没在低频分量的主瓣中;$N=2048$ 时,低频分量的主瓣变窄,高频分量显现。
6.4 实验报告要求
(1)记录实验内容中要求观察、分析、比较的内容,并对结果进行分析。
(2)总结实验中根据实验现象得到的其他结论。
实验7 FIR滤波器的窗函数设计方法
7.1 实验目的
(1)探究窗函数主瓣宽度和旁辦电平对滤波器性能的影响。
(2)观察理解Gibbs效应。
7.2 实验原理
用窗函数法设计FIR滤波器,观察不同阶数下的通带起伏和过渡带宽度的变化。
7.3 实验内容
(1)采用矩形窗函数设计带通滤波器,中心频率为 $f_0=150MHz$,通带宽度为 $B=100MHz$,上下阻带最小衰减大于20dB,上下过渡带宽小于10MHz,采样频率为 $f_s=500MHz$,要求具有线性相位特性。
①使用MATLAB内置的fir1函数设计出符合指标要求的滤波器(其中矩形窗函数使用boxcar函数),利用MATLAB内置的freqz函数画出幅频特性曲线。
②改变系统阶数N(增加和减少),画出不同N下的幅频特性曲线(此处建议对幅度谱取绝对值画图,不建议画出功率谱图),并分析讨论。要求幅度归一化,频率单位为Hz。滤波器幅度谱的频率范围为 $0~f_s$。
(2)采用三角形窗、汉宁窗、汉明窗布莱克曼窗重复上述过程。
7.4 实验报告要求
(1)记录实验内容中要求观察、分析、比较的内容,并对结果进行分析。
(2)总结实验中根据实验现象得到的其他结论。
实验8 线性相位系统
8.1 实验目的
(1)观察理解IIR滤波器的非线性相位特性与FIR滤波器的线性相位特性。
(2)探究两类相位特性对信号处理的影响。
8.2 实验原理
设计频带指标相同的IIR滤波器与FIR滤波器,观察两类滤波器对信号波形的影响。观察非线性相位的IIR滤波器发生的色散现象。
8.3 实验内容
(1)设计IIR低通滤波器。通带截止频率 $0.8\pi$,通带起伏小于1dB,过渡带宽小于 $0.1\pi$,止带衰减大于40dB,幅度模型Butterworth。
①使用MATLAB内置的buttord与butter函数设计出符合指标要求的滤波器,利用MATLAB内置的freqz函数画出幅频特性曲线和相频特性曲线,利用MATLAB内置的grdelay函数测量设计出的滤波器的群时延。
(2)设计FIR低通滤波器。通带截止频率 $0.8\pi$,过渡带宽小于 $0.1\pi$,止带衰减大于40dB。线性相位特性,窗函数法。
①使用MATLAB内置的fir1函数(默认为Hamming窗)设计出符合指标要求的滤波器,利用MATLAB内置的freqz函数画出幅频特性曲线和相频特性曲线,利用MATLAB内置的grdelay函数测量设计出的滤波器的群时延。
(3)$x_1(n)=\sin(\omega_1 n)$,$x_2(n)=\sin(\omega_2 n)$,$\omega_1=0.1\pi$,$\omega_2=0.7\pi$,序列长度为 $N=80$,分别输入IIR和FIR滤波器,观察群延迟(系统时延),与上述测量结果对比验证。
①使用MATLAB内置的filter函数模拟输入信号通过滤波器,并用MATLAB内置的stem函数画出通过前后的时域波形图。
(4)$x(n)=x_1(n)+x_2(n)$,分别输入IIR和FIR滤波器,观察对比输入波形和两个输出波形。
①使用MATLAB内置的filter函数模拟输入信号通过滤波器,并用MATLAB内置的stem函数画出通过前后的时域波形图。
8.4 实验报告要求
(1)记录实验内容中要求观察、分析、比较的内容,并对结果进行分析。
(2)总结实验中根据实验现象得到的其他结论。