2025-11-08 06:20:41
matlab里算DFT最直接就是用fft函数啦。先把信号拿过来,确定要分多少段再补零到2的整数次方。比如100个点要补到128个,这样fft算得快。算完结果还要除以总点数,取模值和相位。
为啥是这个法子呢?因为dft本身要算N²次复数乘法,当N大时超慢。matlab的fft用库函数优化了,本质是分治法,把N点拆成N/2点,像切西瓜那样算。比如N=1024时,传统dft要1024²=1,048,576次运算,而fft只要1024×10≈10,240次。实际测试过,用fft算1秒的音频,传统dft要算十几天。而且matlab默认fft输出的是频率点,不是周期点,得自己调整。所以补零到2的幂次是怕算的时候出错,比如128点算完能正好对应1秒的音频。
本题链接: