尝试用Excel 完成 FFT 分析

office应用 徐 自远 1579℃

FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

   虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT之后的结果是什意思、如何决定要使用多少点来做FFT。

   现在圈圈就根据实际经验来说说FFT结果的具体物理意义。一个模拟信号,经过ADC采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此罗嗦了。

   采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。

   假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn所能分辨到频率为Fs/N,如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。如果要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。
假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是An=根号a*a+b*b,相位就是Pn=atan2(b,a)。根据以上的结果,就可以计算出n点(n≠1,且n<=N/2)对应的信号的表达式为:An/(N/2)*cos(2*pi*Fn*t+Pn),即2*An/N*cos(2*pi*Fn*t+Pn)。对于n=1点的信号,是直流分量,幅度即为A1/N。
   由于FFT结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。   

< 现在进入Excel 应用部分>

Time   nA
23:55:43      0.000050533   50.53
23:55:43      0.000050596   50.60
23:55:43      0.000050701   50.70
23:55:44      0.000050723   50.72
23:55:44      0.000050775   50.78
23:55:44      0.000050407   50.41
23:55:44      0.000050554   50.55
23:55:44      0.000050638   50.64
23:55:45      0.000050670   50.67
23:55:45      0.000050375   50.38
23:55:45      0.000050575   50.58
23:55:45      0.000050628   50.63
23:55:45      0.000050786   50.79
23:55:46      0.000050754   50.75
23:55:46      0.000050691   50.69

数据源格式如上。列A 采样时间, 列B 是收集结果。列C 把B 的结果放大100万倍。

1) Excel中, 数据 -> 数据分析 -> 选中傅立叶计算包;

2)输入区域中: C2:C1025   ( 取 1024个样本)

3)点确定输出。

输出效果如下:

-1.5761686655323-13.154170211423i 13.24826
7.51527679786072-12.3462378230758i 14.45368
4.1040242459709-12.9985667365274i 13.63106
0.753456344407055-7.14076561808764i 7.180406
2.41774879336855-12.4363683220093i 12.66921
0.979004203596167-7.34345190071712i 7.408423
1.0364171188506-12.3564407529179i 12.39983
0.966937618659785-11.5644619240511i 11.60482
3.80598075250153-9.41303134539053i 10.15336

列A 是计算结果, 列B 对列A 取模, Excel 函数 IMABS()

对列B做折线图:

可以观察到,即使去除两边的超显性量,对观察频率没有任何帮助。

我们把样本减少一半,取样 512 个, 结果如下:

这样可以观察到可读的形状了。

现在计算周期:

对应频率 = 样本点 × 取样频率 / 总样本数

那么第 76 个点对应的频率 大约 0.75Hz

转载请注明:徐自远的乱七八糟小站 » 尝试用Excel 完成 FFT 分析

喜欢 (3)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号