2013-07-03 62 views
3

scipy.fft似乎運行這個簡單的腳本時掛起。例如,嘗試使用this文件。scipy.fft某些聲音文件掛

有幾件事情,我注意到:

  1. 從交互式解釋不掛運行的各個命令。
  2. 與其他聲音文件運行並不總是掛腳本(它不只是這個文件是不是雖然工作)
  3. 有時候我WavFileWarning:大塊不明白,但它似乎並沒有被相關到它何時發生
  4. 如果我用終止腳本Ctrl + C我得到的結果就好像它從未卡住。
  5. waveaudiolab打開文件導致相同的結果。

這是一個錯誤還是我做錯了什麼?

+1

檢查掛起系統的文件的'data.shape'的值。如果你的數據長度碰巧是一個質數,或者是幾個大素數的乘積,那麼FFT算法可以做很多事來加速DFT的計算。如果你使用零填充,或者將數據修剪到最接近2的功率,那麼所有東西都應該運行得更快,速度更快。 – Jaime

+0

現貨,謝謝。我在Ctrl + Cing終端時得到的結果並不是正確的,但可能是在計算中通過這一點達到的任何結果。如果您想將您的評論轉換爲答案,我很樂意接受。 – gozzilli

+0

如你所願! ;-) – Jaime

回答

3

檢查掛起系統的文件的data.shape的值。如果你的數據長度碰巧是一個質數,或者是幾個大素數的乘積,那麼FFT算法可以做很多事來加速DFT的計算。如果你使用零填充,或者將數據修剪到最接近2的功率,那麼所有東西都應該運行得更快,速度更快。

0

這應該是一個評論,但只是沒有足夠的空間有...

你可以做更多的調試,這可能會有點幫助。 (假設你在某種類Unix操作系統)

  1. 當程序被卡住,不是閒置或使用大量的CPU?您可以使用「頂部」或類似的檢查。
  2. 程序在出現卡住時該做什麼?你能得到一個堆棧跟蹤?使用像gdb或其他工具一樣的調試器。
  3. 我猜想第一步應該是什麼。搜索你的症狀網。如果它是一個錯誤,它可能已經找到並報告。它甚至可能已經被修復了。

通過查看堆棧跟蹤,應該可以看到程序是否卡住等待某些事情,卡在某處的循環中或者只是在做大量工作。 它也許能夠告訴你,如果問題是在python代碼,C擴展或其他地方。習慣於讀取堆棧跟蹤當然是一個優點。 :)

+0

感謝您的輸入。這個過程確實需要很多CPU,但它沒有堆棧跟蹤 - 它不會引發任何錯誤。如果我按Ctrl + C分解它,它只輸出* correct *結果。通過pdb運行並沒有提供更好的見解 - 仍然停留在同一條線上。 Googleing當然是我所做的第一件事。 – gozzilli