python scipy.signal_scipy.signal.重采样举止怪异

我目前正在做一些信号处理(使用scipy),但我遇到了一个奇怪的问题,无法找出问题所在。也就是说,我正在从.wav文件中读取一些音频数据,但在进一步处理之前必须重新采样。信号有超过500000个样本。在

现在,scipy.signal.重采样只在一个频道上就需要10分钟以上。好吧,我想,这可能是正常的,因为有很多样品。然而,后来我决定用另外两个“信号”(即随机生成的数字数组和一个零数组)和1000000个样本进行实验,并对这些信号进行重新采样。奇怪的是,在这种情况下,重采样只需几毫秒,所以大小显然不是问题。在

我的最后一个实验是从原始信号中提取零点(大约有50000个样本是零值的),然后重新采样。我完全惊讶地发现,重新抽样只需要5万个零大约需要一分钟。以前,我在几毫秒内对一个包含1000000个样本的零数组进行了重新采样,现在我需要等待大约一分钟,以获取50000个样本的数组。一定有什么不对劲,但我不知道是什么。在

我真的看不出这种行为的任何原因;尤其是0(1000000和仅仅几毫秒vs 50000和1分钟)让我非常惊讶。在

下面是一个示例代码,这样您就知道我在说什么了:import scipy.io.wavfile as wavfile

import numpy

import scipy.signal as signal

sample_rate, signal_data = wavfile.read('file.wav')

test_channel = numpy.array(signal_data[:,0], dtype=float)

channel_zeros = numpy.array(signal_data[numpy.where(signal_data[:,0]==0)[0],0], dtype=float)

test_signal = numpy.random.rand((1000000))

test_signal_2 = numpy.zeros((1000000))

number_of_samples = 500

#both of these are executed in less than a second

resampled_random = signal.resample(test_signal, number_of_samples)

resampled_zeros = signal.resample(test_signal_2, number_of_samples)

#this takes minutes

resamples_original_signal = signal.resample(test_channel, number_of_samples)

#this takes about a minute

resampled_original_zeros = signal.resample(channel_zeros, number_of_samples)

你知道这有什么问题吗?提前谢谢。在

你可能感兴趣的:(python,scipy.signal)