本文整理汇总了Python中scipy.fftpack.irfft方法的典型用法代码示例。如果您正苦于以下问题:Python fftpack.irfft方法的具体用法?Python fftpack.irfft怎么用?Python fftpack.irfft使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scipy.fftpack
的用法示例。
在下文中一共展示了fftpack.irfft方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_definition
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def test_definition(self):
x1 = [1,2,3,4,1,2,3,4]
x1_1 = [1,2+3j,4+1j,2+3j,4,2-3j,4-1j,2-3j]
x2 = [1,2,3,4,1,2,3,4,5]
x2_1 = [1,2+3j,4+1j,2+3j,4+5j,4-5j,2-3j,4-1j,2-3j]
def _test(x, xr):
y = irfft(np.array(x, dtype=self.rdt))
y1 = direct_irdft(x)
self.assertTrue(y.dtype == self.rdt,
"Output dtype is %s, expected %s" % (y.dtype, self.rdt))
assert_array_almost_equal(y,y1, decimal=self.ndec)
assert_array_almost_equal(y,ifft(xr), decimal=self.ndec)
_test(x1, x1_1)
_test(x2, x2_1)
示例2: test_size_accuracy
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def test_size_accuracy(self):
# Sanity check for the accuracy for prime and non-prime sized inputs
if self.rdt == np.float32:
rtol = 1e-5
elif self.rdt == np.float64:
rtol = 1e-10
for size in LARGE_COMPOSITE_SIZES + LARGE_PRIME_SIZES:
np.random.seed(1234)
x = np.random.rand(size).astype(self.rdt)
y = irfft(rfft(x))
self.assertTrue(np.linalg.norm(x - y) < rtol*np.linalg.norm(x),
(size, self.rdt))
y = rfft(irfft(x))
self.assertTrue(np.linalg.norm(x - y) < rtol*np.linalg.norm(x),
(size, self.rdt))
# self.ndec is bogus; we should have a assert_array_approx_equal for number of
# significant digits
示例3: istft
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def istft(X, fftsize=128, step="half", wsola=False, mean_normalize=True,
real=False, compute_onesided=True):
"""
Compute ISTFT for STFT transformed X
"""
if real:
local_ifft = fftpack.irfft
X_pad = np.zeros((X.shape[0], X.shape[1] + 1)) + 0j
X_pad[:, :-1] = X
X = X_pad
else:
local_ifft = fftpack.ifft
if compute_onesided:
X_pad = np.zeros((X.shape[0], 2 * X.shape[1])) + 0j
X_pad[:, :fftsize // 2 + 1] = X
X_pad[:, fftsize // 2 + 1:] = 0
X = X_pad
X = local_ifft(X).astype("float64")
if step == "half":
X = invert_halfoverlap(X)
else:
X = overlap_add(X, step, wsola=wsola)
if mean_normalize:
X -= np.mean(X)
return X
示例4: istft
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def istft(X, fftsize=128, step="half", wsola=False, mean_normalize=True,
real=False, compute_onesided=True):
"""
Compute ISTFT for STFT transformed X
"""
if real:
local_ifft = fftpack.irfft
X_pad = np.zeros((X.shape[0], X.shape[1] + 1)) + 0j
X_pad[:, :-1] = X
X = X_pad
else:
local_ifft = fftpack.ifft
if compute_onesided:
X_pad = np.zeros((X.shape[0], 2 * X.shape[1])) + 0j
X_pad[:, :fftsize // 2] = X
X_pad[:, fftsize // 2:] = 0
X = X_pad
X = local_ifft(X).astype("float64")
if step == "half":
X = invert_halfoverlap(X)
else:
X = overlap_add(X, step, wsola=wsola)
if mean_normalize:
X -= np.mean(X)
return X
示例5: bench_random
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def bench_random(self):
from numpy.fft import irfft as numpy_irfft
print()
print('Inverse Fast Fourier Transform (real data)')
print('==================================')
print(' size | scipy | numpy ')
print('----------------------------------')
for size,repeat in [(100,7000),(1000,2000),
(256,10000),
(512,10000),
(1024,1000),
(2048,1000),
(2048*2,500),
(2048*4,500),
]:
print('%5s' % size, end=' ')
sys.stdout.flush()
x = random([size]).astype(double)
x1 = zeros(size/2+1,dtype=cdouble)
x1[0] = x[0]
for i in range(1,size/2):
x1[i] = x[2*i-1] + 1j * x[2*i]
if not size % 2:
x1[-1] = x[-1]
y = irfft(x)
print('|%8.2f' % measure('irfft(x)',repeat), end=' ')
sys.stdout.flush()
assert_array_almost_equal(numpy_irfft(x1,size),y)
print('|%8.2f' % measure('numpy_irfft(x1,size)',repeat), end=' ')
sys.stdout.flush()
print(' (secs for %s calls)' % (repeat))
sys.stdout.flush()
示例6: test_random_real
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def test_random_real(self):
for size in [1,51,111,100,200,64,128,256,1024]:
x = random([size]).astype(self.rdt)
y1 = irfft(rfft(x))
y2 = rfft(irfft(x))
self.assertTrue(y1.dtype == self.rdt,
"Output dtype is %s, expected %s" % (y1.dtype, self.rdt))
self.assertTrue(y2.dtype == self.rdt,
"Output dtype is %s, expected %s" % (y2.dtype, self.rdt))
assert_array_almost_equal(y1, x, decimal=self.ndec,
err_msg="size=%d" % size)
assert_array_almost_equal(y2, x, decimal=self.ndec,
err_msg="size=%d" % size)
示例7: test_irfft
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def test_irfft(self):
overwritable = self.real_dtypes
for dtype in self.real_dtypes:
self._check_1d(irfft, dtype, (16,), -1, overwritable)
self._check_1d(irfft, dtype, (16, 2), 0, overwritable)
self._check_1d(irfft, dtype, (2, 16), 1, overwritable)
示例8: test_definition
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def test_definition(self):
x1 = [1,2,3,4,1,2,3,4]
x1_1 = [1,2+3j,4+1j,2+3j,4,2-3j,4-1j,2-3j]
x2 = [1,2,3,4,1,2,3,4,5]
x2_1 = [1,2+3j,4+1j,2+3j,4+5j,4-5j,2-3j,4-1j,2-3j]
def _test(x, xr):
y = irfft(np.array(x, dtype=self.rdt))
y1 = direct_irdft(x)
assert_equal(y.dtype, self.rdt)
assert_array_almost_equal(y,y1, decimal=self.ndec)
assert_array_almost_equal(y,ifft(xr), decimal=self.ndec)
_test(x1, x1_1)
_test(x2, x2_1)
示例9: test_random_real
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def test_random_real(self):
for size in [1,51,111,100,200,64,128,256,1024]:
x = random([size]).astype(self.rdt)
y1 = irfft(rfft(x))
y2 = rfft(irfft(x))
assert_equal(y1.dtype, self.rdt)
assert_equal(y2.dtype, self.rdt)
assert_array_almost_equal(y1, x, decimal=self.ndec,
err_msg="size=%d" % size)
assert_array_almost_equal(y2, x, decimal=self.ndec,
err_msg="size=%d" % size)
示例10: test_size_accuracy
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def test_size_accuracy(self):
# Sanity check for the accuracy for prime and non-prime sized inputs
if self.rdt == np.float32:
rtol = 1e-5
elif self.rdt == np.float64:
rtol = 1e-10
for size in LARGE_COMPOSITE_SIZES + LARGE_PRIME_SIZES:
np.random.seed(1234)
x = np.random.rand(size).astype(self.rdt)
y = irfft(rfft(x))
_assert_close_in_norm(x, y, rtol, size, self.rdt)
y = rfft(irfft(x))
_assert_close_in_norm(x, y, rtol, size, self.rdt)
示例11: test_invalid_sizes
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def test_invalid_sizes(self):
assert_raises(ValueError, irfft, [])
assert_raises(ValueError, irfft, [[1,1],[2,2]], -5)
# self.ndec is bogus; we should have a assert_array_approx_equal for number of
# significant digits
示例12: istft
# 需要导入模块: from scipy import fftpack [as 别名]
# 或者: from scipy.fftpack import irfft [as 别名]
def istft(X, windowsize=None, fftsize=None, step="half", wsola=False, mean_normalize=True,
real=False, compute_onesided=True):
"""
Compute ISTFT for STFT transformed X
"""
if real:
local_ifft = fftpack.irfft
X_pad = np.zeros((X.shape[0], X.shape[1] + 1)) + 0j
X_pad[:, :-1] = X
X = X_pad
else:
local_ifft = fftpack.ifft
if fftsize == None:
assert windowsize == None
if compute_onesided:
X_pad = np.zeros((X.shape[0], 2 * X.shape[1])) + 0j
X_pad[:, :fftsize // 2 + 1] = X
X_pad[:, fftsize // 2 + 1:] = 0
X = X_pad
X = local_ifft(X).astype("float64")
if step == "half":
X = invert_halfoverlap(X)
else:
X = overlap_add(X, step, wsola=wsola)
if mean_normalize:
X -= np.mean(X)
return X