|
本帖最后由 iffi123 于 2021-7-16 21:37 编辑
傅立叶变换在数字信号处理里有着广泛应用,与其看着书上写的头头是道, 不如自己亲自算算
利用excel表的计算功能,实际验证一下
构造一个输入信号: f(N)=57+110sin(2*PI*500*N/2500)+320cos(2*PI*200*N/2500)
为了方便计算, 函数是离散的,它包含了直流(幅度57), 幅度110的500Hz正弦波, 以及幅度320的200Hz余弦波三项。
下面通过傅立叶变换,计算出上述三个分量的幅度值(系数)
计算公式如下, 公式本身是针对连续时间函数的, 不过验证采用有限点求和代替积分
先假设200Hz, 500Hz为基频100Hz的谐波,采样频率取500Hz的5倍即2500Hz
公式里的T是指基频的周期,也就是100Hz, 积分区间取0-T (0-2π), 所以只要计算f(N)的25个点(N=0 -24), 也就是D列
然后根据公式,还需要构造一个单位幅度500Hz正弦波,以及单位幅度200Hz余弦波, 如图的E列,和F列, 另外还构造一个单位幅度400Hz正弦波(输入信号无此分量,用于对照),即G列
再分别和输入信号(D列)逐一相乘(直流分量K列的不需要相乘, 见公式)
然后对相乘后的每1列求和(25项), 这个结果代表积分值(原本还需要乘以Δt, 也就是采样周期,因为计算公式分母的T也包含Δt, 可抵消)
这样可以得出,500Hz的累加值为1375, 为计算幅度,它需要除以T(前面说过,分子分母抵消掉采样周期,只要用采样点数即可代替, 25个采样点代表1个基频周期), 所以1375/25*2=110, 与输入信号的幅度完全一致
同样的200Hz的为4000, 所以幅度=4000/25*2=320, 也是一样
而对400Hz计算结果为-1.3074E-12, 视为0,说明输入不含400Hz
最后直流分量累加值为1425, 幅度为1425/25=57(不需要再乘以2)
验证成功
|
|