Fixed database typo and removed unnecessary class identifier.
This commit is contained in:
parent
00ad49a143
commit
45fb349a7d
5098 changed files with 952558 additions and 85 deletions
109
venv/Lib/site-packages/scipy/fftpack/helper.py
Normal file
109
venv/Lib/site-packages/scipy/fftpack/helper.py
Normal file
|
@ -0,0 +1,109 @@
|
|||
import operator
|
||||
from numpy.fft.helper import fftshift, ifftshift, fftfreq
|
||||
import scipy.fft._pocketfft.helper as _helper
|
||||
import numpy as np
|
||||
__all__ = ['fftshift', 'ifftshift', 'fftfreq', 'rfftfreq', 'next_fast_len']
|
||||
|
||||
|
||||
def rfftfreq(n, d=1.0):
|
||||
"""DFT sample frequencies (for usage with rfft, irfft).
|
||||
|
||||
The returned float array contains the frequency bins in
|
||||
cycles/unit (with zero at the start) given a window length `n` and a
|
||||
sample spacing `d`::
|
||||
|
||||
f = [0,1,1,2,2,...,n/2-1,n/2-1,n/2]/(d*n) if n is even
|
||||
f = [0,1,1,2,2,...,n/2-1,n/2-1,n/2,n/2]/(d*n) if n is odd
|
||||
|
||||
Parameters
|
||||
----------
|
||||
n : int
|
||||
Window length.
|
||||
d : scalar, optional
|
||||
Sample spacing. Default is 1.
|
||||
|
||||
Returns
|
||||
-------
|
||||
out : ndarray
|
||||
The array of length `n`, containing the sample frequencies.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy import fftpack
|
||||
>>> sig = np.array([-2, 8, 6, 4, 1, 0, 3, 5], dtype=float)
|
||||
>>> sig_fft = fftpack.rfft(sig)
|
||||
>>> n = sig_fft.size
|
||||
>>> timestep = 0.1
|
||||
>>> freq = fftpack.rfftfreq(n, d=timestep)
|
||||
>>> freq
|
||||
array([ 0. , 1.25, 1.25, 2.5 , 2.5 , 3.75, 3.75, 5. ])
|
||||
|
||||
"""
|
||||
n = operator.index(n)
|
||||
if n < 0:
|
||||
raise ValueError("n = %s is not valid. "
|
||||
"n must be a nonnegative integer." % n)
|
||||
|
||||
return (np.arange(1, n + 1, dtype=int) // 2) / float(n * d)
|
||||
|
||||
|
||||
def next_fast_len(target):
|
||||
"""
|
||||
Find the next fast size of input data to `fft`, for zero-padding, etc.
|
||||
|
||||
SciPy's FFTPACK has efficient functions for radix {2, 3, 4, 5}, so this
|
||||
returns the next composite of the prime factors 2, 3, and 5 which is
|
||||
greater than or equal to `target`. (These are also known as 5-smooth
|
||||
numbers, regular numbers, or Hamming numbers.)
|
||||
|
||||
Parameters
|
||||
----------
|
||||
target : int
|
||||
Length to start searching from. Must be a positive integer.
|
||||
|
||||
Returns
|
||||
-------
|
||||
out : int
|
||||
The first 5-smooth number greater than or equal to `target`.
|
||||
|
||||
Notes
|
||||
-----
|
||||
.. versionadded:: 0.18.0
|
||||
|
||||
Examples
|
||||
--------
|
||||
On a particular machine, an FFT of prime length takes 133 ms:
|
||||
|
||||
>>> from scipy import fftpack
|
||||
>>> min_len = 10007 # prime length is worst case for speed
|
||||
>>> a = np.random.randn(min_len)
|
||||
>>> b = fftpack.fft(a)
|
||||
|
||||
Zero-padding to the next 5-smooth length reduces computation time to
|
||||
211 us, a speedup of 630 times:
|
||||
|
||||
>>> fftpack.helper.next_fast_len(min_len)
|
||||
10125
|
||||
>>> b = fftpack.fft(a, 10125)
|
||||
|
||||
Rounding up to the next power of 2 is not optimal, taking 367 us to
|
||||
compute, 1.7 times as long as the 5-smooth size:
|
||||
|
||||
>>> b = fftpack.fft(a, 16384)
|
||||
|
||||
"""
|
||||
# Real transforms use regular sizes so this is backwards compatible
|
||||
return _helper.good_size(target, True)
|
||||
|
||||
|
||||
def _good_shape(x, shape, axes):
|
||||
"""Ensure that shape argument is valid for scipy.fftpack
|
||||
|
||||
scipy.fftpack does not support len(shape) < x.ndim when axes is not given.
|
||||
"""
|
||||
if shape and not axes:
|
||||
shape = _helper._iterable_of_int(shape, 'shape')
|
||||
if len(shape) != np.ndim(x):
|
||||
raise ValueError("when given, axes and shape arguments"
|
||||
" have to be of the same length")
|
||||
return shape
|
Loading…
Add table
Add a link
Reference in a new issue