_Original рдЯрд┐рдХрдЯ http://projects.scipy.org/numpy/ticket/1266 2009-10-19 рдкрд░ trac user koehler рджреНрд╡рд╛рд░рд╛, рдЕрдЬреНрдЮрд╛рдд рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ ред_
рд╣рд╛рд▓рд╛рдБрдХрд┐ numpy.fft.fft рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐:
"рдпрд╣ рджреЛ рдХреА рдирд╛ рдкреЙрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред рдпрд╣ fft's рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╢реАрд▓ рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рдХреИрд╢ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд┐рдиреНрди n рдХреЗ рд╕рд╛рде рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред" , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ fft рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдорддрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд░рдгреА рдХреА рд▓рдВрдмрд╛рдИ рдкрд░ рдирд┐рд░реНрднрд░, fft рд░рдирдЯрд╛рдЗрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд░рдо рдмрджрд▓рддрд╛ рд╣реИ:
[ipython shell, from numpy import *]
In [1]: %time fft.fft(zeros(119516))
CPU times: user 22.83 s, sys: 0.39 s, total: 23.23 s
Wall time: 23.53 s
In [3]: %time fft.fft(zeros(119517))
CPU times: user 36.33 s, sys: 0.08 s, total: 36.40 s
Wall time: 36.51 s
In [5]: %time fft.fft(zeros(119518))
CPU times: user 4.88 s, sys: 0.08 s, total: 4.96 s
Wall time: 5.02 s
In [7]: %time fft.fft(zeros(119519))
CPU times: user 0.45 s, sys: 0.00 s, total: 0.45 s
Wall time: 0.45 s
In [9]: %time fft.fft(zeros(119515))
CPU times: user 0.07 s, sys: 0.00 s, total: 0.08 s
Wall time: 0.08 s
In [11]: %time fft.fft(zeros(119514))
CPU times: user 15.84 s, sys: 0.06 s, total: 15.90 s
Wall time: 15.95 s
In [13]: %time fft.fft(zeros(119513))
CPU times: user 272.75 s, sys: 1.03 s, total: 273.78 s
Wall time: 275.63 s
_ @ рдПрдВрдбреЛрд▓рд┐рде рдиреЗ 2009-11-20_ рдкрд░ рд▓рд┐рдЦрд╛
рд╕рдВрдмрдВрдзрд┐рдд: # 1177 http://projects.scipy.org/scipy/ticket/949
_ @ rgommers рдиреЗ 2011-03-01_ рдкрд░ рд▓рд┐рдЦрд╛
_ @ rgommers рдиреЗ 2011-03-01_ рдкрд░ рд▓рд┐рдЦрд╛
рдбреЗрд╡рд┐рдб рд╕реА рдиреЗ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдмреНрд▓реВрд╕реНрдЯреАрди рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ: https://github.com/cournape/numpy/tree/bluestein
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Numpy рдЯреНрд░рдВрдХ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдЬрдореАрди рдЪрд╛рд╣рд┐рдПред
2011-03-25 рдкрд░ @mwiebe рджреНрд╡рд╛рд░рд╛ рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ Unscheduled
рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛
рдЗрд╕ рдЬрдирд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЫреЛрдЯреЗ рдЕрдкрд░рд╛рдзреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдбрд┐рдВрдЧ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ
https://github.com/scipy/scipy/pull/3144
рдПрдХ рдмреЗрд╣рддрд░ рдкреИрдбрд┐рдВрдЧ рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдВрдХ fftpack рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ
рд╣рд╛рдВ, m = 2 ** nextpow2(2 * n - 1)
рдмрдЬрд╛рдп next_regular
рдлрд╝рдВрдХреНрд╢рди рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддреЗрдЬрд╝ рд╣реЛрдЧрд╛
рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ pymbar рдХреЗ рдбреЗрдЯрд╛рдореЙрдбреЗрд▓реНрд╕ рдСрдЯреЛрдХреНрд░реЙрд▓реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓
np.fft.fftpack._fft_cache.clear()
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реНрдореГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЦрддрд░рдирд╛рдХ рд░реВрдк рд╕реЗ рди рдмрдврд╝реЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╛ рддреЛ рдХреЛрдИ рдХрдВрд╡рд░ рдЬреИрд╕реЗ "рдореЗрдорд╕реЗрдлрд╝ = рдЯреНрд░реВ" рдФрд░ / рдпрд╛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдмрд┐рдирд╛ рдХреИрд╢реЗ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред
@juliantaylor рдкреИрдбрд┐рдВрдЧ рд╕рд╛рджреЗ FFTs рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИ, рд╕рд╣реА рд╣реИ? рд╕рд┐рд░реНрдл рдХрдирд╡рд┐рдХреНрд╢рди / рд╕рд╣рд╕рдВрдмрдВрдз?
@rgommers Bluestein рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдореБрдЦреНрдп рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП FFT рдХреА рдЧрддрд┐ https://github.com/scipy/scipy/issues/4288 рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рдЪрд┐рд░рд╛рдЧреЛрдВ рдХреА рдкреВрд░реНрд╡-рд╕рдВрдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛрддрд╛ рд╣реИ рдореЗрдореЛрд░реА рдореЗрдВ рдЪрд┐рд░рдк рдХрд░реЗрдВ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдЗрд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдЪрдВрдХреНрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред рддреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдиреНрди рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдЗрд╕ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП scipy.fftpack.czt рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП?
рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ https://github.com/numpy/numpy/issues/1177 рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЬрдм рддрдХ рдХрд┐ рд░реЗрдбрд░ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рддрд░рд╣ рдХреБрдЫ рдФрд░ рдмреНрд▓реВрд╕реНрдЯреАрди рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ?
рдФрд░ @smcantab рдХрд╛ рдореБрджреНрджрд╛ рдЕрд▓рдЧ рд╣реИ?
@endolith рдпрд╣ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдерд╛ :) рд▓реЗрдХрд┐рди рд╣рд╛рдВ, рдЕрдм рдЬрдм рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП pymbar рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛ред
FYI рдХрд░реЗрдВ, рдореИрдВ рдПрдХ рдСрдбрд┐рдпреЛ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рднрд╛рдЧрд╛, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ред рдпрд╣ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдФрд░ рдЪрд░рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
%time np.fft.fft( np.random.randn(100000) )
Wall time: 16 ms
Out[16]:
array([ 196.58599022 +0.j , -88.38483360 +89.2507627j ,
-166.72250316+339.27161306j, ..., 12.22959535 -64.01621313j,
-166.72250316-339.27161306j, -88.38483360 -89.2507627j ])
%time np.fft.fft( np.random.randn(100003) )
Wall time: 1min 42s
Out[17]:
array([ 13.36160617 +0.j , -314.86472577-340.44686425j,
-258.36716707-170.43805382j, ..., -21.18014704+441.3618185j ,
-258.36716707+170.43805382j, -314.86472577+340.44686425j])
рд▓рдВрдмрд╛рдИ 1 рдПрдл 6: 16 рдорд┐рд▓рд┐рд╕реЗрдХрдВрдб
рд▓рдВрдмрд╛рдИ 1e6 + 3: 1 MINUTE рдФрд░ 42 SECONDS рдХреА рдЪреЛрд░реА
рдлрд╝реАрдЪрд░, рдмрдЧ рдирд╣реАрдВред FFTPACK рдХреЗрд╡рд▓ "рддреЗрдЬрд╝" рд╣реИ рдЬрдм рдЖрдХрд╛рд░ рдХрд╛рд░рдХ рд╕рдВрдЦреНрдпрд╛ 2, 3, 4, 5 рдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдмрдбрд╝реЗ рдкреНрд░рд╛рдЗрдо рд╕рд╛рдЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрдЪреНрдЫрд╛ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 100003 рдЕрднрд╛рдЬреНрдп рд╣реИред
рдореИрдВ рдЗрд╕реЗ "рд╕реБрд╡рд┐рдзрд╛" рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдмрдЧ рдирд╣реАрдВ рд╣реИред :)
https://github.com/scipy/scipy/issues/4288 рдореЗрдВ рдмреНрд▓реВрд╕реНрдЯрд┐рди рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рдЪрд┐рд░ рдХреА рд╕рдВрдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдореБрдЦ рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред
рджрд┐рд▓рдЪрд╕реНрдкред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдФрд░ рдорддрд▓рд╛рдм рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрдлреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдЬреВрд▓рд┐рдпрд╛ рдФрд░ рдорддрд▓рд╛рдм рдПрдлрдПрдлрдЯреАрдбрдмреНрд▓реНрдпреВ рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдо рдЗрд╕рдХреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ FFTW рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИрдВ; pyFFTW рдмрд▓реНрдХрд┐ рд╡рд░реНрддрдорд╛рди рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдПрдлрдПрдлрдЯреА рдЧрддрд┐ рдПрдХ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реИред FFTPACK рдЕрдкрдиреЗ рджрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдЧреЗ рдмрдврд╝ рдЧрдП рд╣реИрдВред
@charris рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
@standarddeviant рдЖрдк FFTW рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдиреНрди / рдЪреАрд░ рдХреЗ рдКрдкрд░ рдмрдВрджрд░-рдкреИрдЪ pyfftw рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдпрд╣ рд╕рдВрдЦреНрдпрд╛ 1.17 рдореЗрдВ рддрдп рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдзрдиреНрдпрд╡рд╛рдж @mreineck , рд╕рдорд╛рдкрди
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ рд╕рдВрдЦреНрдпрд╛ 1.17 рдореЗрдВ рддрдп рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред