biorwavf

Биоортогональный фильтр вейвлета сплайна

Синтаксис

Описание

пример

[RF,DF] = biorwavf(wname) возвращает реконструкцию (синтез) и разложение (анализ) фильтры масштабирования, RF и DF, соответственно, сопоставленный с биоортогональным вейвлетом, заданным wname.

Примеры

свернуть все

Возвратите биоортогональные фильтры масштабирования вейвлета сплайна с двумя исчезающими моментами.

wname = 'bior2.2';
[RF,DF] = biorwavf(wname)
RF = 1×3

    0.2500    0.5000    0.2500

DF = 1×5

   -0.1250    0.2500    0.7500    0.2500   -0.1250

В этом примере показано, как взять фильтры анализа и синтеза, сопоставленные с биоортогональным вейвлетом, и сделать их совместимыми с Wavelet Toolbox™. Wavelet Toolbox требует, чтобы анализ и синтез lowpass и фильтры highpass имели равный даже длина. Этот пример использует почти ортогональные биоортогональные вейвлеты на основе Лапласовой финансовой пирамиды Берта и Адельсона (Таблица 8.4 на странице 283 в [1]). Пример также демонстрирует, как исследовать свойства биоортогональных вейвлетов.

Задайте коэффициенты фильтра анализа и синтеза биоортогонального вейвлета.

Hd = [-1 5 12 5 -1]/20*sqrt(2);
Gd = [3 -15 -73 170 -73 -15 3]/280*sqrt(2);
Hr = [-3 -15 73 170 73 -15 -3]/280*sqrt(2);
Gr = [-1 -5 12 -5 -1]/20*sqrt(2);

Hd и Gd lowpass и highpass аналитические фильтры, соответственно. Hr и Gr lowpass и highpass фильтры синтеза. Они - все фильтры конечной импульсной характеристики (FIR). Подтвердите содействующую сумму фильтра lowpass к sqrt(2) и highpass фильтруют содействующую сумму к 0.

sum(Hd)/sqrt(2)
ans = 1.0000
sum(Hr)/sqrt(2)
ans = 1.0000
sum(Gd)
ans = -1.0061e-16
sum(Gr)
ans = -9.7145e-17

Z-преобразование КИХ-фильтра h полином Лорана h(z) данный h(z)=k=kbkehkz-k. Степень |h| из Лорана полином задан как |h|=ke-kb. Поэтому длина фильтра h 1+|h|. Исследуйте расширение Лорана фильтров вейвлета и масштабирования.

PHd = laurentPolynomial(Coefficients=Hd,MaxOrder=2)
PHd = 
  laurentPolynomial with properties:

    Coefficients: [-0.0707 0.3536 0.8485 0.3536 -0.0707]
        MaxOrder: 2

PHr = laurentPolynomial(Coefficients=Hr,MaxOrder=3)
PHr = 
  laurentPolynomial with properties:

    Coefficients: [-0.0152 -0.0758 0.3687 0.8586 0.3687 -0.0758 -0.0152]
        MaxOrder: 3

PGd = laurentPolynomial(Coefficients=Gd,MaxOrder=3)
PGd = 
  laurentPolynomial with properties:

    Coefficients: [0.0152 -0.0758 -0.3687 0.8586 -0.3687 -0.0758 0.0152]
        MaxOrder: 3

PGr = laurentPolynomial(Coefficients=Gr,MaxOrder=2)
PGr = 
  laurentPolynomial with properties:

    Coefficients: [-0.0707 -0.3536 0.8485 -0.3536 -0.0707]
        MaxOrder: 2

Поскольку фильтры сопоставлены с биоортогональным вейвлетом, подтвердить PHd(z)PHr(z)+PG(z)PGr(z)=2.

PHd*PHr + PGd*PGr
ans = 
  laurentPolynomial with properties:

    Coefficients: 2
        MaxOrder: 0

Wavelet Toolbox™ требует, чтобы фильтры, сопоставленные с вейвлетом, имели даже равную длину. Использовать Лапласов вейвлет просачивается тулбокс, необходимо включать недостающие степени Ряда Лорана как нули.

Степени PHd и PHr 4 и 6, соответственно. Минимальный фильтр ровной длины, который может вместить четыре фильтра, имеет длину 8, который соответствует полиному Лорана степени 7. Стратегия состоит в том, чтобы предварительно ожидать и добавить 0s максимально равномерно так, чтобы все фильтры имели длину 8. Предварительно ожидайте 0 ко всем фильтрам, и затем добавьте два 0s к Hd и Gr.

Hd = [0 Hd 0 0];
Gd = [0 Gd];
Hr = [0 Hr];
Gr = [0 Gr 0 0];

Можно исследовать свойства биоортогональных вейвлетов путем создания наборов фильтров DWT. Создайте два пользовательских набора фильтров DWT с помощью фильтров, один для анализа и другого для синтеза. Подтвердите, что наборы фильтров биоортогональны.

fb = dwtfilterbank('Wavelet','Custom',...
    'CustomScalingFilter',[Hd' Hr'],...
    'CustomWaveletFilter',[Gd' Gr']);

fb2 = dwtfilterbank('Wavelet','Custom',...
    'CustomScalingFilter',[Hd' Hr'],...
    'CustomWaveletFilter',[Gd' Gr'],...
    'FilterType','Synthesis');

fprintf('fb: isOrthogonal = %d\tisBiorthogonal = %d\n',...
    isOrthogonal(fb),isBiorthogonal(fb));
fb: isOrthogonal = 0	isBiorthogonal = 1
fprintf('fb2: isOrthogonal = %d\tisBiorthogonal = %d\n',...
    isOrthogonal(fb2),isBiorthogonal(fb2));
fb2: isOrthogonal = 0	isBiorthogonal = 1

Постройте масштабирование и функции вейвлета, сопоставленные с наборами фильтров в самой грубой шкале.

[phi,t] = scalingfunctions(fb);
[psi,~] = wavelets(fb);
[phi2,~] = scalingfunctions(fb2);
[psi2,~] = wavelets(fb2);
subplot(2,2,1)
plot(t,phi(end,:))
grid on
title('Scaling Function - Analysis')
subplot(2,2,2)
plot(t,psi(end,:))
grid on
title('Wavelet - Analysis')
subplot(2,2,3)
plot(t,phi2(end,:))
grid on
title('Scaling Function - Synthesis')
subplot(2,2,4)
plot(t,psi2(end,:))
grid on
title('Wavelet - Synthesis')

Figure contains 4 axes objects. Axes object 1 with title Scaling Function - Analysis contains an object of type line. Axes object 2 with title Wavelet - Analysis contains an object of type line. Axes object 3 with title Scaling Function - Synthesis contains an object of type line. Axes object 4 with title Wavelet - Synthesis contains an object of type line.

Вычислите набор фильтров framebounds.

[analysisLowerBound,analysisUpperBound] = framebounds(fb)
analysisLowerBound = 0.9505
analysisUpperBound = 1.0211
[synthesisLowerBound,synthesisUpperBound] = framebounds(fb2)
synthesisLowerBound = 0.9800
synthesisUpperBound = 1.0528

Входные параметры

свернуть все

Имя биоортогонального вейвлета в виде 'biorNr.Nd' где возможные значения для Nr и Nd следующие:

Nr = 1 Nd = 1 , 3 or 5
Nr = 2 Nd = 2 , 4 , 6 or 8
Nr = 3Nd = 1 , 3 , 5 , 7 or 9
Nr = 4 Nd = 4
Nr = 5 Nd = 5
Nr = 6 Nd = 8

Nr и Nd числа исчезающих моментов для фильтров реконструкции и разложения, соответственно.

Пример: 'biorwavf3.7'

Выходные аргументы

свернуть все

Фильтр реконструкции сопоставил с биоортогональным вейвлетом wname, возвращенный как вектор с действительным знаком.

Фильтр разложения сопоставил с биоортогональным вейвлетом wname, возвращенный как вектор с действительным знаком.

Смотрите также

|

Представлено до R2006a