本文整理汇总了Python中scipy.signal.hanning方法的典型用法代码示例。如果您正苦于以下问题:Python signal.hanning方法的具体用法?Python signal.hanning怎么用?Python signal.hanning使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scipy.signal
的用法示例。
在下文中一共展示了signal.hanning方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: stft
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import hanning [as 别名]
def stft(X, fftsize=128, mean_normalize=True, compute_onesided=True):
"""
Compute STFT for 1D input X
"""
if compute_onesided:
local_fft = np.fft.rfft
fftsize = 2 * fftsize
cut = -1
else:
local_fft = np.fft.fft
cut = None
if mean_normalize:
X -= X.mean()
X = halfoverlap(X, fftsize)
X = X * np.hanning(X.shape[-1])[None]
X = local_fft(X)[:, :cut]
return X
示例2: test_smooth
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import hanning [as 别名]
def test_smooth():
tr = get_rand_traj()
assert len(tr.attrs_nstep) > 0
trs = crys.smooth(tr, hanning(11))
assert len(trs.attrs_nstep) > 0
assert_attrs_not_none(trs, attr_lst=tr.attr_lst)
for name in tr.attrs_nstep:
a1 = getattr(tr, name)
a2 = getattr(trs, name)
assert a1.shape == a2.shape
assert np.abs(a1 - a2).sum() > 0.0
assert trs.timestep == tr.timestep
assert trs.nstep == tr.nstep
# reproduce data with kernel [0,1,0]
trs = crys.smooth(tr, hanning(3))
for name in tr.attrs_nstep:
a1 = getattr(tr, name)
a2 = getattr(trs, name)
assert np.allclose(a1, a2)
trs1 = crys.smooth(tr, hanning(3), method=1)
trs2 = crys.smooth(tr, hanning(3), method=2)
assert len(trs1.attrs_nstep) > 0
assert len(trs2.attrs_nstep) > 0
for name in tr.attrs_nstep:
a1 = getattr(tr, name)
a2 = getattr(trs1, name)
a3 = getattr(trs2, name)
assert np.allclose(a1, a2)
assert np.allclose(a1, a3)
trs1 = crys.smooth(tr, hanning(11), method=1)
trs2 = crys.smooth(tr, hanning(11), method=2)
assert len(trs1.attrs_nstep) > 0
assert len(trs2.attrs_nstep) > 0
for name in trs1.attrs_nstep:
a1 = getattr(trs1, name)
a2 = getattr(trs2, name)
assert np.allclose(a1, a2)
示例3: ltsd_vad
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import hanning [as 别名]
def ltsd_vad(x, fs, threshold=9, winsize=8192):
# winsize based on sample rate
# 1024 for fs = 16000
orig_dtype = x.dtype
orig_scale_min = x.min()
orig_scale_max = x.max()
x = (x - x.min()) / (x.max() - x.min())
# works with 16 bit
x = x * (2 ** 15)
x = x.astype("int32")
window = sp.hanning(winsize)
ltsd = LTSD(winsize, window, 5)
s_vad = ltsd.compute(x)
# LTSD is 50% overlap, so each "step" covers 4096 samples
# +1 to cover the extra edge window
n_samples = int(((len(s_vad) + 1) * winsize) // 2)
time_s = n_samples / float(fs)
time_points = np.linspace(0, time_s, len(s_vad))
time_samples = (fs * time_points).astype(np.int32)
time_samples = time_samples
f_vad = np.zeros_like(x, dtype=np.bool)
offset = winsize
for n, (ss, es) in enumerate(zip(time_samples[:-1], time_samples[1:])):
sss = ss - offset
if sss < 0:
sss = 0
ses = es - offset
if ses < 0:
ses = 0
if s_vad[n + 1] < threshold:
f_vad[sss:ses] = False
else:
f_vad[sss:ses] = True
f_vad[ses:] = False
x = x.astype("float64")
x = x / float(2 ** 15)
x = x * (orig_scale_max - orig_scale_min) + orig_scale_min
x = x.astype(orig_dtype)
return x[f_vad], f_vad
示例4: NMREval
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import hanning [as 别名]
def NMREval(self, xn, xnhat):
""" Method to perform NMR perceptual evaluation of audio quality between two signals.
Args :
xn : (ndarray) 1D Array containing the true time domain signal.
xnhat : (ndarray) 1D Array containing the estimated time domain signal.
Returns :
NMR : (float) A float measurement in dB providing a perceptually weighted
evaluation. Below -9 dB can be considered as in-audible difference/error.
As appears in :
- K. Brandenburg and T. Sporer, “NMR and Masking Flag: Evaluation of Quality Using Perceptual Criteria,” in
Proceedings of the AES 11th International Conference on Test and Measurement, Portland, USA, May 1992, pp. 169–179
- J. Nikunen and T. Virtanen, "Noise-to-mask ratio minimization by weighted non-negative matrix factorization," in
Acoustics Speech and Signal Processing (ICASSP), 2010 IEEE International Conference on, Dallas, TX, 2010, pp. 25-28.
"""
mX, _ = TimeFrequencyDecomposition.STFT(xn, hanning(self.nfft/2 + 1), self.nfft, self.nfft/4)
mXhat, _ = TimeFrequencyDecomposition.STFT(xnhat, hanning(self.nfft/2 + 1), self.nfft, self.nfft/4)
# Compute Error
Err = np.abs(mX - mXhat) ** 2.
# Acquire Masking Threshold
mT = self.maskingThreshold(mX)
# Inverse the filter of masking threshold
imT = 1./(mT + eps)
# Outer/Middle Ear transfer function on the diagonal
LTq = 10 ** (self.MOEar()/20.)
# NMR computation
NMR = 10. * np.log10((1./mX.shape[0]) * self._maxb * np.sum((imT * (Err*LTq))))
print(NMR)
return NMR
示例5: main
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import hanning [as 别名]
def main(fn, start, end):
fn = Path(fn).expanduser()
# rx_array is loading the last 45% of the waveform from the file
rx_array = load_bin(fn, start, end)
# peak_array holds the indexes of each peak in the waveform
# peak_distance is the smallest distance between each peak
peak_array, peak_distance = get_peaks(rx_array)
l = peak_distance - 1
print("using window: ", l, "\n")
# remove first peak
peak_array = peak_array[1:]
Npulse = len(peak_array) - 1
print(Npulse, "pulses detected")
wind = signal.hanning(l)
Ntone = 2
Nblockest = 160
fs = 4e6 # [Hz]
data = np.empty([Npulse, l])
# set each row of data to window * (first l samples after each peak)
for i in range(Npulse):
data[i, :] = wind * rx_array[peak_array[i] : peak_array[i] + l]
fb_est, sigma = esprit(data, Ntone, Nblockest, fs)
print("fb_est", fb_est)
print("sigma: ", sigma)
drange = (3e8 * fb_est) / (2e6 / 0.1)
print("range: ", drange, "\n")
示例6: sinusoid_analysis
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import hanning [as 别名]
def sinusoid_analysis(X, input_sample_rate, resample_block=128, copy=True):
"""
Contruct a sinusoidal model for the input signal.
Parameters
----------
X : ndarray
Input signal to model
input_sample_rate : int
The sample rate of the input signal
resample_block : int, optional (default=128)
Controls the step size of the sinusoidal model
Returns
-------
frequencies_hz : ndarray
Frequencies for the sinusoids, in Hz.
magnitudes : ndarray
Magnitudes of sinusoids returned in ``frequencies``
References
----------
D. P. W. Ellis (2004), "Sinewave Speech Analysis/Synthesis in Matlab",
Web resource, available: http://www.ee.columbia.edu/ln/labrosa/matlab/sws/
"""
X = np.array(X, copy=copy)
resample_to = 8000
if input_sample_rate != resample_to:
if input_sample_rate % resample_to != 0:
raise ValueError("Input sample rate must be a multiple of 8k!")
# Should be able to use resample... ?
# resampled_count = round(len(X) * resample_to / input_sample_rate)
# X = sg.resample(X, resampled_count, window=sg.hanning(len(X)))
X = sg.decimate(X, input_sample_rate // resample_to, zero_phase=True)
step_size = 2 * round(resample_block / input_sample_rate * resample_to / 2.)
a, g, e = lpc_analysis(X, order=8, window_step=step_size,
window_size=2 * step_size)
f, m = lpc_to_frequency(a, g)
f_hz = f * resample_to / (2 * np.pi)
return f_hz, m
示例7: sinusoid_analysis
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import hanning [as 别名]
def sinusoid_analysis(X, input_sample_rate, resample_block=128, copy=True):
"""
Contruct a sinusoidal model for the input signal.
Parameters
----------
X : ndarray
Input signal to model
input_sample_rate : int
The sample rate of the input signal
resample_block : int, optional (default=128)
Controls the step size of the sinusoidal model
Returns
-------
frequencies_hz : ndarray
Frequencies for the sinusoids, in Hz.
magnitudes : ndarray
Magnitudes of sinusoids returned in ``frequencies``
References
----------
D. P. W. Ellis (2004), "Sinewave Speech Analysis/Synthesis in Matlab",
Web resource, available: http://www.ee.columbia.edu/ln/labrosa/matlab/sws/
"""
X = np.array(X, copy=copy)
resample_to = 8000
if input_sample_rate != resample_to:
if input_sample_rate % resample_to != 0:
raise ValueError("Input sample rate must be a multiple of 8k!")
# Should be able to use resample... ?
# resampled_count = round(len(X) * resample_to / input_sample_rate)
# X = sg.resample(X, resampled_count, window=sg.hanning(len(X)))
X = sg.decimate(X, input_sample_rate // resample_to)
step_size = 2 * round(resample_block / input_sample_rate * resample_to / 2.)
a, g, e = lpc_analysis(X, order=8, window_step=step_size,
window_size=2 * step_size)
f, m = lpc_to_frequency(a, g)
f_hz = f * resample_to / (2 * np.pi)
return f_hz, m