FFT点数与频率的关系
本人目前正在做一个监测项目。开始用的是DFT(没有蝶型算法),后来为了速度选择了FFT,程序是用vc自己写的。开始用DFT算得的复数值与maltab一致。现进行FFT时,由于采用的是采样间隔为1分钟的一天连续数据,共1440个点。为了用FFT不得不扩充到2048个点。现在的问题是扩充后求得2048个复数值,与之前直接DFT算出的结果有什么关系?换句话讲,之前DFT的复数中第二个值F[1]代表的是频率为一天一个周期的信号,那在FFT变换后的2048个复数点中,那一个能表示之前DFT的F[1]。看了书上写的是:补零前个数n1,傅里叶变换用F[]表示;傅里叶变换补零后为n2,傅里叶变换用G[]表示,则F[v]=(n2/n1)G[n2*v/n1]。但是当v=1时,n2*v/n1不是一个整数,也就是说G[n2*v/n1]并不存在。我想请问高手,这个对应关系该怎么解决?在1440个点补零到2048个点后,那一个复数值对应的是频率我一天一个周期的信号。谢谢指导!!
VibrationMaster :
1.补零后的结果第一条谱线意义不再是一天,而是1440/2480的结果;
2.如果想让第一条谱线仍然具有一天的意义,可以对1440点数据重新抽样成2048点,有resamp这个函数可以完成
3.如果你只想计算一天,半天等几条谱线,而不是全部的谱线,直接用1440点数据做DFT也是可以的(比如<20)
4.MATLAB还有另外一个函数CZT,长期被振动界所忽略.采用这个函数可以对频谱任意取样,样本长度也无须2^N. 但是运算量约是同样长度的FFT的六倍