-
问题重述
DSP课程实验
- 计算机模拟产生多频率信号:
- 编写通用的FFT子程序
- 设置参数,对信号进行频谱分析
- 对信号分别以满足和不满足奈奎斯特采样定理的采样率进行采样,观察其频谱变化
- 设计低通、高通、带通和带阻滤波器,对多频率信号进行滤波处理
- 撰写实验报告,内容包括实验步骤、流程图、源程序、设置参数、输出结果(图)、结果分析(结合原理)
例如:模拟信号:
用一个FFT处理器对其进行频谱分析,要求能分辨所有的频率分量,则
- 1)最小信号记录长度应为多少?
- 2)采样频率至少为多少?
- 3)若采样频率为100Hz,则采样点数应取几点;
- 4)若采样频率为50Hz,则频谱分析得到的信号频率分量有哪些?是否与信号实际频率分量一致?为什么?
-
实验目的
- 实验所需知识覆盖离散傅里叶变换、数字滤波器设计、信号抽取与插值恢复、奈奎斯特定理等内容,通过实验加深对DSP课程内容的理解,巩固所学知识。
- 学会利用计算机编写通用FFT程序,对连续信号频谱波形进行分析。
- 学会应用DFT分析数字信号处理中常见问题及探寻解决方法。
- 熟悉高级程序语言的使用方法,包括常见函数的使用,图形绘制,多种库的调用和参数的调节。
- 增强在DSP方面的动手能力和自学能力。
-
问题分析
按照题目要求,首先应利用计算机生成一个由多个频率叠加而成的信号。之后在不通风抽样频率之下对信号进行采样。编写FFT程序对信号进行DFT变换,应能观察出在满足和不满足奈奎斯特采样定理的情况下信号频谱分别处于不混叠和混叠状态。然后需要对信号进行恢复以观察满足或不满足奈奎斯特采样定理的情况下,频域的频谱混叠对时域恢复信号的影响。在频谱混叠时,观察其时域信号的失真。
在满足奈奎斯特采样定理的情况下,分别用数字低通、高通、带通和带阻滤波器对要求信号进行滤波处理,观察其频域的变化和时域波形变化。
本实验主要实现对时域信号的采样(A/D转换),滤波(数字信号处理),以及信号的插值恢复(D/A转换)等步骤。
-
实验原理
数字信号的傅里叶变换,通常采用离散傅里叶变换(DFT)方法。但是DFT存在的不足就是计算量太大,很难进行实时处理。计算一个N点的DFT,一般需要N²次复数乘法和N(N-1)次复数加法运算。因此,当N较大或要求对信号进行实时处理时,往往难以实现所需运算速度。FFT是一种DFT的高效算法,它根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
DFT的运算为:
由这种方法计算DFT对于 的每个K值,需要进行4N次实数相乘和(4N-2)次相加,对于N个k值,共需4N*N次实数相乘和(4N-2)*N次实数相加。改进DFT算法,减小它的运算量,利用DFT中 的周期性和对称性,使整个DFT的计算变成一系列迭代运算,可大幅度提高运算过程和运算量,这就是FFT的基本思想。FFT对于在计算机系统或者说数字系统中应用离散傅立叶变换,是很大改进。
有限长离散信号x(n),n=0,1,…,N-1的DFT定义为:
可以看出,DFT需要计算大约N2次乘法和N2次加法。当N较大时,这个计算量是很大的。利用WN的对称性和周期性,将N点DFT分解为两个N/2点的 DFT,这样两个N/2点DFT总的计算量只是原来的一半,即(N/2)2+(N/2)2=N2/2,这样可以继续分解下去,将N/2再分解为N/4点 DFT等。对于N=2m 点的DFT都可以分解为2点的DFT,这样其计算量可以减少为(N/2)log2N次乘法和Nlog2N次加法。图为FFT与DFT-所需运算量与计算点数的关系曲线。由图可以明显看出FFT算法的优越性。
将x(n)分解为偶数与奇数的两个序列之和,即
x1(n)和x2(n)的长度都是N/2,x1(n)是偶数序列,x2(n)是奇数序列,则
其中X1(k)和X2(k)分别为x1(n)和x2(n)的N/2点DFT。由于X1(k)和