本文整理汇总了Python中scipy.fftpack.fftshift方法的典型用法代码示例。如果您正苦于以下问题:Python fftpack.fftshift方法的具体用法?Python fftpack.fftshift怎么用?Python fftpack.fftshift使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scipy.fftpack
的用法示例。
在下文中一共展示了fftpack.fftshift方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: from_recip
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def from_recip(y):
"""
Converts Fourier frequencies to spatial coordinates.
Parameters
----------
y : `list` [`numpy.ndarray` [`float`]], of shape [(nx,), (ny,), ...]
List (or equivalent) of vectors which define a mesh in the dimension
equal to the length of `x`
Returns
-------
x : `list` [`numpy.ndarray` [`float`]], of shape [(nx,), (ny,), ...]
List of vectors defining a mesh such that for a function, `f`, defined on
the mesh given by `y`, ifft(f) is defined on the mesh given by `x`. 0 will be
in the middle of `x`.
"""
x = []
for Y in y:
if Y.size > 1:
x.append(fftfreq(Y.size, Y.item(1) - Y.item(0)) * (2 * pi))
else:
x.append(array([0]))
x[-1] = x[-1].astype(Y.dtype, copy=False)
return [fftshift(X) for X in x]
示例2: SO3_ifft
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def SO3_ifft(f_hat):
"""
"""
b = len(f_hat)
d = setup_d_transform(b)
df_hat = [d[l] * f_hat[l][:, None, :] for l in range(len(d))]
# Note: the frequencies where m=-B or n=-B are set to zero,
# because they are not used in the forward transform either
# (the forward transform is up to m=-l, l<B
F = np.zeros((2 * b, 2 * b, 2 * b), dtype=complex)
for l in range(b):
F[b - l:b + l + 1, :, b - l:b + l + 1] += df_hat[l]
F = fftshift(F, axes=(0, 2))
f = ifft2(F, axes=(0, 2))
return f * 2 * (b ** 2) / np.pi
示例3: to_recip
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def to_recip(x):
"""
Converts spatial coordinates to Fourier frequencies.
Parameters
----------
x : `list` [`numpy.ndarray` [`float`]], of shape [(nx,), (ny,), ...]
List (or equivalent) of vectors which define a mesh in the dimension
equal to the length of `x`
Returns
-------
y : `list` [`numpy.ndarray` [`float`]], of shape [(nx,), (ny,), ...]
List of vectors defining a mesh such that for a function, `f`, defined on
the mesh given by `x`, `fft(f)` is defined on the mesh given by `y`
"""
y = []
for X in x:
if X.size > 1:
y.append(fftfreq(X.size, X.item(1) - X.item(0)) * (2 * pi))
else:
y.append(array([0]))
y[-1] = y[-1].astype(X.dtype, copy=False)
return [fftshift(Y) for Y in y]
示例4: get_numpy
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def get_numpy(shape, fftn_shape=None, **kwargs):
import numpy.fft as numpy_fft
f = {
"fft2": numpy_fft.fft2,
"ifft2": numpy_fft.ifft2,
"rfft2": numpy_fft.rfft2,
"irfft2": lambda X: numpy_fft.irfft2(X, s=shape),
"fftshift": numpy_fft.fftshift,
"ifftshift": numpy_fft.ifftshift,
"fftfreq": numpy_fft.fftfreq,
}
if fftn_shape is not None:
f["fftn"] = numpy_fft.fftn
fft = SimpleNamespace(**f)
return fft
示例5: get_scipy
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def get_scipy(shape, fftn_shape=None, **kwargs):
import numpy.fft as numpy_fft
import scipy.fftpack as scipy_fft
# use numpy implementation of rfft2/irfft2 because they have not been
# implemented in scipy.fftpack
f = {
"fft2": scipy_fft.fft2,
"ifft2": scipy_fft.ifft2,
"rfft2": numpy_fft.rfft2,
"irfft2": lambda X: numpy_fft.irfft2(X, s=shape),
"fftshift": scipy_fft.fftshift,
"ifftshift": scipy_fft.ifftshift,
"fftfreq": scipy_fft.fftfreq,
}
if fftn_shape is not None:
f["fftn"] = scipy_fft.fftn
fft = SimpleNamespace(**f)
return fft
示例6: convolve
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def convolve(f, g):
"""
FFT based convolution
:param f: array
:param g: array
:return: array, (f * g)[n]
"""
f_fft = fftpack.fftshift(fftpack.fftn(f))
g_fft = fftpack.fftshift(fftpack.fftn(g))
return fftpack.fftshift(fftpack.ifftn(fftpack.ifftshift(f_fft*g_fft)))
示例7: deconvolve
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def deconvolve(f, g):
"""
FFT based deconvolution
:param f: array
:param g: array
:return: array,
"""
f_fft = fftpack.fftshift(fftpack.fftn(f))
g_fft = fftpack.fftshift(fftpack.fftn(g))
return fftpack.fftshift(fftpack.ifftn(fftpack.ifftshift(f_fft/g_fft)))
示例8: test_definition
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def test_definition(self):
x = [0,1,2,3,4,-4,-3,-2,-1]
y = [-4,-3,-2,-1,0,1,2,3,4]
assert_array_almost_equal(fftshift(x),y)
assert_array_almost_equal(ifftshift(y),x)
x = [0,1,2,3,4,-5,-4,-3,-2,-1]
y = [-5,-4,-3,-2,-1,0,1,2,3,4]
assert_array_almost_equal(fftshift(x),y)
assert_array_almost_equal(ifftshift(y),x)
示例9: test_inverse
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def test_inverse(self):
for n in [1,4,9,100,211]:
x = random((n,))
assert_array_almost_equal(ifftshift(fftshift(x)),x)
示例10: test_inverse
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def test_inverse(self):
for n in [1,4,9,100,211]:
x = random.random((n,))
assert_array_almost_equal(ifftshift(fftshift(x)),x)
示例11: generate_fractal_surface
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def generate_fractal_surface(self, G):
"""Generate a 2D array with a fractal distribution.
Args:
G (class): Grid class instance - holds essential parameters describing the model.
"""
if self.xs == self.xf:
surfacedims = (self.ny, self.nz)
elif self.ys == self.yf:
surfacedims = (self.nx, self.nz)
elif self.zs == self.zf:
surfacedims = (self.nx, self.ny)
self.fractalsurface = np.zeros(surfacedims, dtype=complextype)
# Positional vector at centre of array, scaled by weighting
v1 = np.array([self.weighting[0] * (surfacedims[0]) / 2, self.weighting[1] * (surfacedims[1]) / 2])
# 2D array of random numbers to be convolved with the fractal function
R = np.random.RandomState(self.seed)
A = R.randn(surfacedims[0], surfacedims[1])
# 2D FFT
A = fftpack.fftn(A)
# Shift the zero frequency component to the centre of the array
A = fftpack.fftshift(A)
# Generate fractal
generate_fractal2D(surfacedims[0], surfacedims[1], G.nthreads, self.b, self.weighting, v1, A, self.fractalsurface)
# Shift the zero frequency component to start of the array
self.fractalsurface = fftpack.ifftshift(self.fractalsurface)
# Take the real part (numerical errors can give rise to an imaginary part) of the IFFT
self.fractalsurface = np.real(fftpack.ifftn(self.fractalsurface))
# Scale the fractal volume according to requested range
fractalmin = np.amin(self.fractalsurface)
fractalmax = np.amax(self.fractalsurface)
fractalrange = fractalmax - fractalmin
self.fractalsurface = self.fractalsurface * ((self.fractalrange[1] - self.fractalrange[0]) / fractalrange) \
+ self.fractalrange[0] - ((self.fractalrange[1] - self.fractalrange[0]) / fractalrange) * fractalmin
示例12: SO3_FFT_synthesize
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def SO3_FFT_synthesize(f_hat):
"""
Perform the inverse (spectral to spatial) SO(3) Fourier transform.
:param f_hat: a list of matrices of with shapes [1x1, 3x3, 5x5, ..., 2 L_max + 1 x 2 L_max + 1]
"""
F = wigner_d_transform_synthesis(f_hat)
# The rest of the SO(3) FFT is just a standard torus FFT
F = fftshift(F, axes=(0, 2))
f = ifft2(F, axes=(0, 2))
b = len(f_hat)
return f * (2 * b) ** 2
示例13: correlation_2D
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def correlation_2D(image):
"""
#TODO document normalization output in units
:param image: 2d image
:return: 2d fourier transform
"""
# Take the fourier transform of the image.
F1 = fftpack.fft2(image)
# Now shift the quadrants around so that low spatial frequencies are in
# the center of the 2D fourier transformed image.
F2 = fftpack.fftshift(F1)
return np.abs(F2)
示例14: mfcc
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def mfcc(s,fs, nfiltbank):
#divide into segments of 25 ms with overlap of 10ms
nSamples = np.int32(0.025*fs)
overlap = np.int32(0.01*fs)
nFrames = np.int32(np.ceil(len(s)/(nSamples-overlap)))
#zero padding to make signal length long enough to have nFrames
padding = ((nSamples-overlap)*nFrames) - len(s)
if padding > 0:
signal = np.append(s, np.zeros(padding))
else:
signal = s
segment = np.empty((nSamples, nFrames))
start = 0
for i in range(nFrames):
segment[:,i] = signal[start:start+nSamples]
start = (nSamples-overlap)*i
#compute periodogram
nfft = 512
periodogram = np.empty((nFrames, int(nfft/2 + 1)))
for i in range(nFrames):
x = segment[:,i] * hamming(nSamples)
spectrum = fftshift(fft(x,nfft))
periodogram[i,:] = abs(spectrum[int(nfft/2-1):])/nSamples
#calculating mfccs
fbank = mel_filterbank(nfft, nfiltbank, fs)
#nfiltbank MFCCs for each frame
mel_coeff = np.empty((nfiltbank,nFrames))
for i in range(nfiltbank):
for k in range(nFrames):
mel_coeff[i,k] = np.sum(periodogram[k,:]*fbank[:,i])
mel_coeff = np.log10(mel_coeff)
mel_coeff = dct(mel_coeff)
#exclude 0th order coefficient (much larger than others)
mel_coeff[0,:]= np.zeros(nFrames)
return mel_coeff
示例15: two_point_correlation_fft
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import fftshift [as 别名]
def two_point_correlation_fft(im):
r"""
Calculates the two-point correlation function using fourier transforms
Parameters
----------
im : ND-array
The image of the void space on which the 2-point correlation is desired
Returns
-------
result : named_tuple
A tuple containing the x and y data for plotting the two-point
correlation function, using the *args feature of matplotlib's plot
function. The x array is the distances between points and the y array
is corresponding probabilities that points of a given distance both
lie in the void space.
Notes
-----
The fourier transform approach utilizes the fact that the autocorrelation
function is the inverse FT of the power spectrum density.
For background read the Scipy fftpack docs and for a good explanation see:
http://www.ucl.ac.uk/~ucapikr/projects/KamilaSuankulova_BSc_Project.pdf
"""
# Calculate half lengths of the image
hls = (np.ceil(np.shape(im))/2).astype(int)
# Fourier Transform and shift image
F = sp_ft.ifftshift(sp_ft.fftn(sp_ft.fftshift(im)))
# Compute Power Spectrum
P = np.absolute(F**2)
# Auto-correlation is inverse of Power Spectrum
autoc = np.absolute(sp_ft.ifftshift(sp_ft.ifftn(sp_ft.fftshift(P))))
tpcf = _radial_profile(autoc, r_max=np.min(hls))
return tpcf