N个点FFT变换中的频率分辨率以及与实际频率的关系

做FFT变换时,我们一般会取N个点来做FFT变换,得到N个变换后的系数,也称之为频谱系数。在离散时间傅里叶变换中,频谱系数是周期函数,以2*pi(注:pi指的是圆周率3.1415926)为周期。
频谱的分辨率是 2*pi/N.  假设采样率是fs,那么,这个2*pi/N与fs有什么关系?对应实际频率来讲,其频率的分辨率是多少赫兹的?
我们从对连续函数采样的公式来推导:

e^(j*2*pi*k*f*t)  这是连续傅里叶变换中用到的基函数(用于xt在上面做分解,投影,映射)。对这个函数,按照fs的采样率采样N个点,公式如下:
e^(j*2*pi*k*f*(n*1/fs)),其中n属于[0,N).
这N个点用来直接做FFT,隐含着其周期就是N个点,这N个点一直在循环往复。所以,e^(j*2*pi*k*f*t) 中的t,在一个周期T内采样,T是等于N*1/fs这么长的时间。
T = N * 1/fs
所以,e^(j*2*pi*k*f*t)中的f就等于 1/T,进而等于fs/N:
f=fs/N,所以,f/fs = 1/N

总的推导如下:
e^(j*2*pi*k*f*t) 
=e^(j*2*pi*k*f*(n*1/fs))  ----------以 fs 为采样率来采样,采样 N 个点,这里的=不是严格意义上的等于,而是相当于 “离散化操作”。
=e^(j*2*pi*k*f/fs*n)   -------------把离散化后的 n 分离出来,让 f 与 fs结合
=e^(j*2*pi*k*1/N*n)------------- f/fs 就等于 N, 参考前面的说明
=e^(j*k*(2*pi/N)*n)-----把k 与 n 都分别分离开,把 2 * pi/N 合在一起



所以,离散后,频谱分辨率是2*pi/N,即基频是这个。harmonic频率是这个频率的k倍,k在[0,N-1]区间内。
而对应的连续函数,其基频是f,即1/T,即fs/N. 基频是fs/N.

所以,2*pi/N这个基频,对应的实际频率是fs/N.

补充:

 离散傅里叶变换,如果取[0:2*pi)这个周期,则幅度是以pi为中心对称的。
 e^(j*2*pi*1*/N)与e^(j*2*pi*(N-1)/N)的幅度相等,相位不同。
 e^(j*2*pi*1*/N) = cos(2*pi/N) + j * sin(2*pi/N)

e^(j*2*pi*(N-1)/N)
=e^(j*2*pi*N/N - j*2*pi*1*/N )
=e^(- j*2*pi*1*/N )
=cos(2*pi/N) - j * sin(2*pi/N)

补充二:(来自这个博客:http://www.cnblogs.com/sddai/p/5513407.html)
4种频率及其数量关系
N个点FFT变换中的频率分辨率以及与实际频率的关系_第1张图片

4种频率及其数量关系

实际物理频率表示AD采集物理信号的频率,fs为采样频率,由奈奎斯特采样定理可以知道,fs必须≥信号最高频率的2倍才不会发生信号混叠,因此fs能采样到的信号最高频率为fs/2。
角频率是物理频率的2*pi倍,这个也称模拟频率。
归一化频率是将物理频率按fs归一化之后的结果,最高的信号频率为fs/2对应归一化频率0.5,这也就是为什么在matlab的fdtool工具中归一化频率为什么最大只到0.5的原因。
圆周频率是归一化频率的2*pi倍,这个也称数字频率。

也有归一化到[-1,1]之间的,如下图,横坐标是表示 pi,所以,归一化到[-pi, pi]之间

N个点FFT变换中的频率分辨率以及与实际频率的关系_第2张图片

你可能感兴趣的:(数字信号处理,频率分辨率-fft)