【发布时间】:2013-07-01 04:20:51
【问题描述】:
scipy.fft 在运行这个简单的脚本时似乎挂起:
import scipy
from scipy.io import wavfile
sound = 'sounds/silence/iPhone5.wav'
fs, data = wavfile.read(sound)
print scipy.fft(data)
在某些文件上。以this 文件为例。
我注意到的一些事情:
- 从交互式解释器运行单个命令不会挂起。
- 与其他声音文件一起运行并不总是会挂起脚本(但不只是这个文件不工作)
- 有时我会收到 WavFileWarning: 块不理解,但它似乎与它发生的时间无关
- 如果我用 Ctrl+C 终止脚本,我得到的结果就好像它从未卡住一样。
- 使用
wave或audiolab打开文件会导致相同的结果。
这是一个错误还是我做错了什么?
【问题讨论】:
-
检查
data.shape的值是否存在挂起系统的文件。如果您的数据长度恰好是一个素数,或者是几个大素数的乘积,那么 FFT 算法无法加快 DFT 的计算速度。如果你用零填充,或者将数据修剪到最接近 2 的幂,那么一切都应该运行得更快。 -
正确,谢谢。当 Ctrl+C'ing 终端时我得到的结果不是正确的,但可能是在计算中达到的那个点。如果您想将您的评论转化为答案,我很乐意接受。