Для заданной поддержки ортогональный вейвлет с фазового отклика, наиболее близко напоминающей линейную фазу фильтр, называется наименее асимметричным. Симлеты являются примерами наименее асимметричных вейвлеты. Это модифицированные версии классических вейвлетов Daubechies db. В этом примере вы покажете, что симлет порядка 4 имеет почти линейный фазовый отклик, в то время как вейвлет порядка 4 Daubechies не имеет.
Сначала постройте график порядка 4 symlet и порядка 4 функции масштабирования Daubechies. Хотя ни один из них не является совершенно симметричным, обратите внимание на то, насколько симметричен симлет.
[phi_sym,~,xval_sym]=wavefun('sym4',10); [phi_db,~,xval_db]=wavefun('db4',10); subplot(2,1,1) plot(xval_sym,phi_sym) title('sym4 - Scaling Function') grid on subplot(2,1,2) plot(xval_db,phi_db) title('db4 - Scaling Function') grid on
Сгенерируйте фильтры, сопоставленные с симлетами порядка 4 и вейвлетами Daubechies.
scal_sym = symaux(4,sqrt(2)); scal_db = dbaux(4,sqrt(2));
Вычислите частотную характеристику фильтров масштабирующего синтеза.
[h_sym,w_sym] = freqz(scal_sym); [h_db,w_db] = freqz(scal_db);
Чтобы избежать разрывов зрения, раскройте углы фазы частотных характеристик и постройте их график. Обратите внимание, как хорошо угол фазы фильтра symlet аппроксимирует прямую линию.
h_sym_u = unwrap(angle(h_sym)); h_db_u = unwrap(angle(h_db)); figure plot(w_sym/pi,h_sym_u,'.') hold on plot(w_sym([1 end])/pi,h_sym_u([1 end]),'r') grid on xlabel('Normalized Frequency ( x \pi rad/sample)') ylabel('Phase (radians)') legend('Phase Angle of Frequency Response','Straight Line') title('Symlet Order 4 - Phase Angle')
figure plot(w_db/pi,h_db_u,'.') hold on plot(w_db([1 end])/pi,h_db_u([1 end]),'r') grid on xlabel('Normalized Frequency ( x \pi rad/sample)') ylabel('Phase (radians)') legend('Phase Angle of Frequency Response','Straight Line') title('Daubechies Order 4 - Phase Angle')
The sym4
и db4
вейвлеты не симметричны, но биортогональный вейвлет. Постройте график функции масштабирования, связанной со bior3.5
вейвлет. Вычислите частотную характеристику фильтра масштабирования синтеза для вейвлета и проверьте, что он имеет линейную фазу.
[~,~,phi_bior_r,~,xval_bior]=wavefun('bior3.5',10); figure plot(xval_bior,phi_bior_r) title('bior3.5 - Scaling Function') grid on
[LoD_bior,HiD_bior,LoR_bior,HiR_bior] = wfilters('bior3.5'); [h_bior,w_bior] = freqz(LoR_bior); h_bior_u = unwrap(angle(h_bior)); figure plot(w_bior/pi,h_bior_u,'.') hold on plot(w_bior([1 end])/pi,h_bior_u([1 end]),'r') grid on xlabel('Normalized Frequency ( x \pi rad/sample)') ylabel('Phase (radians)') legend('Phase Angle of Frequency Response','Straight Line') title('Biorthogonal 3.5 - Phase Angle')