离散傅立叶变换(DFT)和快速算法(FFT)的区别是什么?我是把傅立叶变换用在经济上的时间序列处理问题上.时间域上的数据是离散的实数,一共有522个,然后我用计算机里的dft和fft两种算法作
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/05 18:41:04
离散傅立叶变换(DFT)和快速算法(FFT)的区别是什么?我是把傅立叶变换用在经济上的时间序列处理问题上.时间域上的数据是离散的实数,一共有522个,然后我用计算机里的dft和fft两种算法作
离散傅立叶变换(DFT)和快速算法(FFT)的区别是什么?
我是把傅立叶变换用在经济上的时间序列处理问题上.时间域上的数据是离散的实数,一共有522个,然后我用计算机里的dft和fft两种算法作傅立叶变换.当然,得到的角频率一个是522,一个是1024,频域上的数据,一个也是512,另一个是1024,这里我有一个问题,说dft和fft是一样的,体现在哪里?然后我把我的数据减去数据的平均数,也就是把数据平移,然后再作上述两种变换,结果dfft得到的频域上的数据和没平移的时候一样,但是fft得到的就大不相同了.然后我就取数据的前512个,满足2的指数次,结果这次平移不平移对结果没有影响,我就搞不懂了,虽说fft是补零,(当不是2的指数次时),但为什么结果出入这么大?希望大虾问答.
上面说的平移应该是纵向的平移.
为什么大家不相信我呢
>> a={1,2,3};
>> b=dfft(a);
>> print b;
2.0000000
-0.50000000 + 0.28867513i
-0.50000000 - 0.28867513i
>> b=fft(a);
>> print b;
1.5000000
-0.50000000 - 0.50000000i
0.50000000
-0.50000000 + 0.50000000i
>> a=a-meanc(a);
>> b=dfft(a);
>> print b;
0.00000000
-0.50000000 + 0.28867513i
-0.50000000 - 0.28867513i
>> b=fft(a);
>> print b;
0.00000000
-0.50000000
0.00000000
-0.50000000
>> 以上是我在gauss上运行的结果
大家在matlab也可以试,调用fft(x,4),就是fft了,如果fft(x)就是dfft了.
离散傅立叶变换(DFT)和快速算法(FFT)的区别是什么?我是把傅立叶变换用在经济上的时间序列处理问题上.时间域上的数据是离散的实数,一共有522个,然后我用计算机里的dft和fft两种算法作
fft就是dft的快速算法,结果是一样的.
应该不会有这个差别.搞不懂就贴图看看
这个差别在于,补0再fft这里0是不受你前面减mean的影响的,所以你前面减东西相当于是减一个矩形,所以fft的结果相当于减一个Sa,所以就会对形状有一些影响.其实如果不是你选了一个过于短的列,也不会有这么明显影响的