2013-07-22 2 views
0

Я работаю с обработкой аудиосигнала и должен выполнить 3-полосный DWT. Я пытаюсь использовать функцию dwt в MATLAB для этого. Однако, прочитав об этой функции, я понял, что она позволяет вводить только два фильтра: Hi и Low Band, но мне нужно ввести 3. Есть ли способ, я могу это сделать? Спасибо!Дискретное преобразование вейвлета в MATLAB

+0

Применить его рекурсивно? –

+0

Что это значит? Мне нужно разложить аудио на 3 полосы, низкую полосу (приближение) и две высокие полосы (детали 1 и деталь 2). Это означает, что мне нужно ввести три набора фильтров, где 'dwt' позволяет вам вводить 2 (' Lo_D' и 'Hi_D'). – Math244

ответ

0

Как вы описываете, как работают всплески. Я думаю, вы должны прочитать документацию/учебники/справочную информацию, чтобы вы поняли, с чем работаете. Оли правильно - то, что происходит для многоуровневого разложения, заключается в том, что детали и аппроксимация вычисляются для каждого уровня, а затем фильтры применяются к приближению (низкой полосе) для вычисления следующего уровня.

например:

sig1=audioread('myfilename'); 
[lev1_lo lev1_hi]=dwt(sig1(:,1),'haar'); 
[lev2_lo lev2_hi]=dwt(lev1_lo,'haar'); 
[lev3_lo lev3_hi]=dwt(lev2_lo,'haar'); 
%etc 

Вы держите lev1_hi, lev2_hi, lev3_hi и lev3_lo для разложения на 3 уровня. В вашем случае держите lev1_hi, lev2_hi и lev2_lo2.

+0

Если вы надеетесь на большее разрешение на высоких частотах, есть преобразования, которые могут это сделать, но вы, вероятно, лучше во временной области. –

+0

Ну ладно, я понимаю, что вы имеете в виду о многоуровневых разложениях. Я все еще могу не понимать это правильно, но то, о чем я прошу, не разлагает сигнал на несколько уровней. Я имею в виду один уровень, на котором сигнал разбит на 3 компонента. – Math244

+0

Я не слышал о таком DWT - может быть, это что-то новое, но я думаю, что вы просто ищете двухуровневую декомпозицию. –