大家好,又见面了,我是你们的朋友全栈君。
例如:模拟信号:
用一个FFT处理器对其进行频谱分析,要求能分辨所有的频率分量,则
按照题目要求,首先应利用计算机生成一个由多个频率叠加而成的信号。之后在不通风抽样频率之下对信号进行采样。编写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)和X2(k)均以N/2为周期,且WN k+N/2=-WN k,所以X(k)又可表示为:
上式的运算可以用图2表示,根据其形状称之为蝶形运算。依此类推,经过m-1次分解,最后将N点DFT分解为N/2个两点DFT。图3为8点FFT的分解流程。
FFT算法的原理是通过许多小的更加容易进行的变换去实现大规模的变换,降低了运算要求,提高了与运算速度。FFT不是DFT的近似运算,它们完全是等效的。
奈奎斯特定理验证与信号恢复
组别 | 频率(f1,f2,f3) | 振幅(A1,A2,A3) | 信号记录长度(NT) | 抽样频率 | 通过滤波器类型 |
---|---|---|---|---|---|
第一组 | (5,20,40) | (1.5,2,-1) | 5 | 160HZ | 无 |
第二组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 无 |
第三组 | (5,20,40) | (1.5,2,-1) | 3 | 50HZ | 无 |
第四组 | (5,20,40) | (1.5,2,-1) | 3 | 80HZ | 无 |
第五组 | (5,20,40) | (1.5,2,-1) | 3 | 100HZ | 无 |
第六组 | (5,20,40) | (1.5,2,-1) | 3 | 320HZ | 无 |
信号通过理想滤波器
组别 | 频率(f1,f2,f3) | 振幅(A1,A2,A3) | 信号记录长度(NT) | 抽样频率 | 通过滤波器类型 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
第七组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 低通(f<10HZ) | ||||||
第八组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 高通 (f>30HZ) | ||||||
第九组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 带通 (10HZ<f<30HZ) | ||||||
第十组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 带阻 (f<10HZ|f>30HZ) | ||||||
信号通过butterworth滤波器
组别 | 频率(f1,f2,f3) | 振幅(A1,A2,A3) | 信号记录长度(NT) | 抽样频率 | 通过滤波器类型 | |||||
---|---|---|---|---|---|---|---|---|---|---|
第十一组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 低通(f<10HZ) | |||||
第十二组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 高通 (f>30HZ) | |||||
第十三组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 带通 (10HZ<f<30HZ) | |||||
第十四组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 带阻 (f<10HZ|f>30HZ) | |||||
第一组输出结果图(实验步骤例):
第二组输出结果图
第三组输出结果图
第四组输出结果图
第五组输出结果图
第六组输出结果图
第七组输出结果图(通过理想低通滤波器)
第八组输出结果图(通过理想高通滤波器)
第九组输出结果图(通过理想带通滤波器10HZ~30HZ)
第十组输出结果图(通过理想带阻滤波器,阻带10~30hz)
第十一组输出结果图(通过10HZ butterworth低通滤波器)
第十二组输出结果图(通过30HZ butterworth高通滤波器)
第十三组输出结果图(通过10~30HZ butterworth带通滤波器)
第十四组输出结果图(通过10~30HZ butterworth带阻滤波器)
组别 | 频率(f1,f2,f3) | 振幅(A1,A2,A3) | 信号记录长度(NT) | 抽样频率 | 是否混叠失真 |
---|---|---|---|---|---|
第一组 | (5,20,40) | (1.5,2,-1) | 5 | 160HZ | 否 |
第二组 | (5,20,40) | (1.5,2,-1) | 3 | 160HZ | 否 |
第三组 | (5,20,40) | (1.5,2,-1) | 3 | 50HZ | 是 |
第四组 | (5,20,40) | (1.5,2,-1) | 3 | 80HZ | 是 |
第五组 | (5,20,40) | (1.5,2,-1) | 3 | 100HZ | 否 |
第六组 | (5,20,40) | (1.5,2,-1) | 3 | 320HZ | 否 |
对前六组实验结果图像的对比分析可得,抽样频率不大于奈奎斯特抽样频率,即两倍最高频率分量时,频谱发生混叠,产生混叠失真。由第三组,第四组可以看出,频域产生混叠,重建信号时域波形发生严重失真。其他各组无失真。即验证了奈奎斯特抽样定理。
组别 | 频率(f1,f2,f3) | 振幅(A1,A2,A3) | 抽样频率 | 通过滤波器类型 |
---|---|---|---|---|
第一组 | (5,20,40) | (1.5,2,-1) | 160HZ | 无 |
第七组 | (5,20,40) | (1.5,2,-1) | 160HZ | 理想低通 (f<10HZ) |
第十一组 | (5,20,40) | (1.5,2,-1) | 160HZ | butterworth低通 (f<10HZ) |
第八组 | (5,20,40) | (1.5,2,-1) | 160HZ | 理想高通 (f>30HZ) |
第十二组 | (5,20,40) | (1.5,2,-1) | 160HZ | butterworth高通 (f>30HZ) |
第九组 | (5,20,40) | (1.5,2,-1) | 160HZ | 理想带通 (10HZ<f<30HZ) |
第十三组 | (5,20,40) | (1.5,2,-1) | 160HZ | butterworth带通 (10HZ<f<30HZ) |
第十组 | (5,20,40) | (1.5,2,-1) | 160HZ | 理想带阻 (f<10HZ|f>30HZ) |
第十四组 | (5,20,40) | (1.5,2,-1) | 160HZ | butterworth带阻 (f<10HZ|f>30HZ) |
对于经过滤波器的组别和第一组比较,可以看出信号通过各个滤波器之后频域的变化,同时观测重建信号的时域可以看出信号通过高通、低通、带通、带阻滤波器后信号波形变化。可以依此看出,对于不同需求、可采用不同形式滤波器。对比理想滤波器和5阶butterworth滤波器的输出结果可已看出butterworth滤波器的滤波结果与理想滤波器的输出结果存在不同,其频谱变化较理想滤波器而言有一个过渡带宽,且阻带衰减不是理想值。与所学内容相吻合,验证了数字滤波器的内容。
模拟信号:
用一个FFT处理器对其进行频谱分析,要求能分辨所有的频率分量,则
答:
实验平台 Jupyter Notebook
实验语言 Python
实验所运用科学计算库 numpy scipy signal
实验所运用绘图库matplotlib seaborn
实验源码:
见我的下载区
https://download.csdn.net/download/weixin_42733218/10942392
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128937.html原文链接:https://javaforall.cn