Многоуровневая вейвлет-декомпозиция не работает

Я пытаюсь разложить данную волну с помощью вейвлета 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 уровней. Где именно в моем коде возникает ошибка?


person Rohan Akut    schedule 10.09.2017    source источник


Ответы (2)


Если вы прочитаете документацию по pywt.dwt_max_level(), вы увидите, что максимальный уровень зависит от длины ваших данных. Может быть, в этом проблема?

Документы: https://pywavelets.readthedocs.io/en/0.2.2/ref/dwt-discrete-wavelet-transform.html#maximum-decomposition-level-dwt-max-level

person Shasa Foster    schedule 05.02.2018

Разлагаемый волновой файл имеет стереоформат, поэтому вы либо конвертируете его в моно формат, либо устанавливаете ось на 0.

Вы можете использовать:

rate, data = scipy.io.wavfile.read('wavfile.wav')
data = data[:, 0]

затем передайте свои данные

coeffs = pywt.wavedec(yourResultA,'db4',level = 5)

or:

установите параметр оси на 0

coeffs = pywt.wavedec(yourResultA,'db4',level = 5, axis = 0)
person imchukwu    schedule 26.04.2018