Многоуровневое вейвлет-разложение не работает

Я пытаюсь разложить данную волну, используя вейвлет 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

Другие вопросы по тегам