Этот пример использует wavefun
чтобы продемонстрировать, как количество моментов исчезновения в биортогональной фильтрующей паре влияет на плавность соответствующей функции двойного масштабирования и вейвлет. В то время как этот пример использует wavefun
для биортогонального вейвлета, 'bior3.7'
, можно также использовать wavefun
для получения ортогональных масштабирующих и вейвлет функций.
Сначала получите фильтры масштабирования и вейвлета и посмотрите на количество моментов исчезновения в вейвлетах. Это эквивалентно рассмотрению количества нулей на уровне -1 + i0 в двойном фильтре.
[LoD,HiD,LoR,HiR] = wfilters('bior3.7');
Если у вас есть Signal Processing Toolbox™, можно использовать zplane
чтобы просмотреть количество нулей в -1 + i0 как для фильтров разложения, так и для фильтров реконструкции.
zplane(LoD); title('Decomposition Filter');
figure;
zplane(LoR); title('Reconstruction Filter');
Если вы увеличиваете область вокруг -1 + i0, вы обнаруживаете, что в фильтре разложения 7 нули и 3 нули в фильтре восстановления. Это имеет важные последствия для плавности соответствующих масштабирующих функций и вейвлетов. Для биортогональных вейвлетов, чем больше нулей при -1 + i0 в lowpass фильтре, тем гладче противоположная функция масштабирования и вейвлет. Другими словами, больше нулей в фильтре разложения подразумевает более плавную функцию масштабирования восстановления и вейвлет. И наоборот, больше нулей в фильтре реконструкции подразумевает более плавную функцию масштабирования разложения и вейвлет.
Использование wavefun
чтобы подтвердить это. Для ортогональных и биортогональных вейвлеты, wavefun
работает путем реверсирования алгоритма Mallat. В частности, алгоритм начинается с одного вейвлет или масштабирующего коэффициента на самом высоком уровне разрешения и восстанавливает вейвлет или масштабирующую функцию до заданного самого высокого уровня разрешения. Обычно от 8 до 10 уровней достаточно, чтобы получить точное представление функции масштабирования и вейвлета.
[phiD,psiD,phiR,psiR] = wavefun('bior3.7',10); subplot(2,1,1) plot([phiD' phiR']); grid on; title('Bior3.7 Scaling Functions'); legend('Decomposition','Reconstruction'); subplot(2,1,2) plot([psiD' psiR']); grid on; title('Bior3.7 Wavelets'); legend('Decomposition','Reconstruction');
Поскольку для lowpass фильтра разложения существует более чем в два раза больше нулей при -1 + i0, функция двойного (восстановления) масштабирования и вейвлет намного более плавны, чем функция масштабирования анализа (разложения) и вейвлет.