Многоуровневое вейвлет-разложение не работает
Я пытаюсь разложить данную волну, используя вейвлет db4 и разложение на 5 уровней. Вот код для того же:
coeffs = pywt.wavedec(yourResultA,'db4',level = 5)
Однако редактор выдает мне следующую ошибку:
Level value of 5 is too high. Maximum allowed is 0.
Я не понимаю значение этой ошибки, так как уровень 0 не имеет никакого смысла. Я даже пытался найти максимально возможный уровень для вейвлета db4, используя этот код:
w = pywt.Wavelet('db4')
x = pywt.dwt_max_level(len(yourResultA), w)
Здесь значение x было 15, так что, я думаю, оно может рассчитываться для 15 уровней. Где именно ошибка в моем коде?
2 ответа
Разлагаемый волновой файл имеет стереофонический формат, поэтому вы можете либо конвертировать в монофонический формат, либо установить для своей оси значение 0.
Ты можешь использовать:
rate, data = scipy.io.wavfile.read('wavfile.wav')
data = data[:, 0]
затем передать ваши данные
coeffs = pywt.wavedec(yourResultA,'db4',level = 5)
или же:
установите параметр оси на 0
coeffs = pywt.wavedec(yourResultA,'db4',level = 5, axis = 0)
Если вы читаете документацию на pywt.dwt_max_level()
Вы можете видеть, что максимальный уровень зависит от длины ваших данных. Может ли это быть проблемой?
Документы: https://pywavelets.readthedocs.io/en/0.2.2/ref/dwt-discrete-wavelet-transform.html