Для оказавшего поддержку ортогональный вейвлет с фазовым откликом, который наиболее тесно напоминает линейный фильтр фазы, называется наименее асимметричный. Symlets являются примерами наименьшего количества асимметричных вейвлетов. Они - измененные версии классических вейвлетов дб Daubechies. В этом примере вы покажете, что порядок 4 symlet имеет почти линейный фазовый отклик, в то время как порядок 4 вейвлет Daubechies не делает.
Сначала постройте порядок 4 symlet и порядок 4 Daubechies, масштабирующий функции. В то время как ни один не совершенно симметричен, отметьте, сколько еще симметричный symlet.
[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 symlet и вейвлетами 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')
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')