本文的目的在于说明fft变换之后的幅值对应的真实频率到底是多少。
为了方便大家理解fft的基础知识,在下面附上《小波分析与傅里叶变换基础》的pdf,dft,fft相关在第三章。
链接:https://pan.baidu.com/s/1xGWTM-QNUnafk3UcB26oog?pwd=f1g3
提取码:f1g3
在matlab中对一组数据使用fft函数之后,得到了等长度的fft序列。这个fft序列的值代表对应频率分量的幅值。
但是这个对应的频率分量到底是多大呢?这涉及到dft(离散傅里叶变换)的知识,我们知道,对于一个支撑集[0,2*pi]的函数f(x),假设它有n+1个离散采样点{f(i*dx),dx=2*pi/n,i=0,1,2,...,n},那么令a=[f(0) f(dx) ... f(n*dx)],fft(a)=[f'(0) f'(dx) ... f'(n*dx)],那就代表对于频率i/(2*pi),这个频率的幅值为f'(i*dx)/(n+1)。
对于一个一般的支撑集为[a,b]的函数g(x),同样假设它有n+1个离散采样点{g(i*dx),dx=2*pi/n,i=1,2,...,n},那么令a=[g(0) g(dx) ... g(n*dx)],fft(a)=[g'(0) g'(dx) ... g'(n*dx)],注意到程序内部仍然是假设序列a是一个支撑集在[0,2*pi]区间上的采样点进而得到的fft(a)。而支撑集从[a,b]变到[0,2*pi]时,实际的频率都有一个(b-a)/(2*pi)的缩放。所以,此时,每个幅值为g'(i*dx)/(n+1)对应的频率实际是i/(2*pi)*(2*pi)/(b-a)=i/(b-a)。