2017-04-14 17 views
1

Pyftt (Python 3.6)와 matlab r2017a fft를 비교하려고합니다. 난 MATLAB를 사용하면 동시에matlab fft보다 Pyfftw가 느림

import time 
import numpy 
import pyfftw 
import multiprocessing 


nthread = multiprocessing.cpu_count() 
print(nthread) 
n=2**20 
a = pyfftw.empty_aligned(n, dtype='complex128') 
print("fft_object = pyfftw.builders.fft(a)") 
fft_object = pyfftw.builders.fft(a) #this instruction spend much time 
print("generate numbers") 
a[:]= 5*numpy.random.rand(n) 
print(a) 
print("start fft") 
start = time.clock() 
y=fft_object() 
end4 = time.clock() - start 
print(end, time:") 
print(end4) 
print("result") 
print(y) 
print(len(y)) 

:

x=5*rand(2^20,1);tic;fft(x);toc 

요청 FFT 알고리즘의 계산을위한 단지 시간, 즉 fft_object에 파이썬 통화 approximatively 동시에이다().

친절한 지원에 미리 감사드립니다. (당신이 적절한 하드웨어를 가지고있는 경우)

+0

그래서 Matlab 호출은 PyFFTW만큼 빠르다. Matlab은 FFTW도 사용하지만 인텔 MKL 가속을 사용하여 컴파일합니다. Intel의 C 컴파일러 나 MKL 라이브러리가 없으면 PyFFTW는 Matlab의 FFT보다 느릴 수 있습니다. –

+2

'pyfftw.builders.fft' 단계는 기본적으로 FFTW가 실제 측정으로 최적화 된 FFT 체계를 찾기 때문에 시간이 오래 걸립니다 : https://hgomersall.github.io/pyFFTW/pyfftw/builders/builders.html#additional을 참조하십시오. 특히'planner_effort' 플래그. 이 측정 값을 파일로 내보내려면'export_wisdom'을 사용하고,로드하려면'import_wisdom'을 사용하면 많은 시간을 절약 할 수 있습니다. Matlab 사용자는 계획을 세우고 지혜를 다루는 데 어려움을 겪을 수 없기 때문에 FFTW에게 FFT 스키마를 신속하게 '추정'할 것을 지시합니다. –

+1

질문을 업데이트하고 Python과 Matlab의 출력 시간을 포함 할 수 있습니까? –

답변