Я работаю с обработкой аудиосигнала и должен выполнить 3-полосный DWT. Я пытаюсь использовать функцию dwt
в MATLAB для этого. Однако, прочитав об этой функции, я понял, что она позволяет вводить только два фильтра: Hi и Low Band, но мне нужно ввести 3. Есть ли способ, я могу это сделать? Спасибо!Дискретное преобразование вейвлета в MATLAB
ответ
Как вы описываете, как работают всплески. Я думаю, вы должны прочитать документацию/учебники/справочную информацию, чтобы вы поняли, с чем работаете. Оли правильно - то, что происходит для многоуровневого разложения, заключается в том, что детали и аппроксимация вычисляются для каждого уровня, а затем фильтры применяются к приближению (низкой полосе) для вычисления следующего уровня.
например:
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
.
Если вы надеетесь на большее разрешение на высоких частотах, есть преобразования, которые могут это сделать, но вы, вероятно, лучше во временной области. –
Ну ладно, я понимаю, что вы имеете в виду о многоуровневых разложениях. Я все еще могу не понимать это правильно, но то, о чем я прошу, не разлагает сигнал на несколько уровней. Я имею в виду один уровень, на котором сигнал разбит на 3 компонента. – Math244
Я не слышал о таком DWT - может быть, это что-то новое, но я думаю, что вы просто ищете двухуровневую декомпозицию. –
Применить его рекурсивно? –
Что это значит? Мне нужно разложить аудио на 3 полосы, низкую полосу (приближение) и две высокие полосы (детали 1 и деталь 2). Это означает, что мне нужно ввести три набора фильтров, где 'dwt' позволяет вам вводить 2 (' Lo_D' и 'Hi_D'). – Math244