dwtfilterbank

Дискретный банк фильтра преобразований вейвлета

Описание

Использование dwtfilterbank создать набор фильтров дискретного вейвлета преобразовывает (DWT)

  • Визуализируйте вейвлеты и масштабирующиеся функции вовремя и частоту.

  • Измерьте полосы пропускания на 3 дБ вейвлета и масштабирующихся функций. Можно также измерить энергетическую концентрацию вейвлета и масштабирующихся функций в теоретических полосах пропускания DWT.

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

  • Определите границы системы координат набора фильтров.

Создание

Описание

пример

fb = dwtfilterbank создайте набор фильтров дискретного вейвлета преобразовывает (DWT). Набор фильтров по умолчанию спроектирован для сигнала с 1 024 выборками. Набор фильтров по умолчанию использует анализ (разложение) sym4 вейвлет и масштабирующий фильтр с семью уровнями разрешения.

пример

fb = dwtfilterbank(Name,Value) создает набор фильтров DWT fb со свойствами, заданными одним или несколькими Name,Value парные аргументы. Свойства могут быть заданы в любом порядке как Name1,Value1,...,NameN,ValueN. Заключите каждое имя свойства в кавычки.

Например, fb = dwtfilterbank('SignalLength',1000,'Wavelet','bior4.4') создает набор фильтров DWT для сигналов длины 1 000 использований биоортогонального bior4.4 вейвлет.

Примечание

Вы не можете изменить значение свойства существующего набора фильтров. Например, если у вас есть набор фильтров fb для sym4 вейвлет, необходимо создать второй набор фильтров fb2 для coif5 вейвлет. Вы не можете присвоить различный Wavelet к fb.

Свойства

развернуть все

Длина сигнала в виде положительного целого числа, больше, чем или равный 2.

Пример: 'SignalLength',768

Типы данных: double

Имя вейвлета раньше создавало набор фильтров в виде вектора символов или строкового скаляра. Wavelet ортогональный или биоортогональный вейвлет, распознанный wavemngr или 'Custom'.

Использовать фильтр вейвлета, не распознанный wavemngr, установите Wavelet свойство к 'Custom' и задайте свойства CustomWaveletFilter и CustomScalingFilter.

Пример: 'Wavelet','bior4.4'

Типы данных: char | string

Фильтр вейвлета вводит в виде одного из 'Analysis' или 'Synthesis'. 'Analysis' использует фильтры разложения, возвращенные wfilters. 'Synthesis' использует фильтры реконструкции.

Вейвлет преобразовывает уровень в виде положительного целого числа, меньше чем или равного полу (log2 (SignalLength)). Для сигнала длины 1024 и sym4 вейвлет, уровень по умолчанию равняется 7.

По умолчанию уровень равен floor(log2(SignalLength/(L-1))) где L является длиной фильтра вейвлета, сопоставленного с Wavelet. Для вейвлетов, распознанных wavemngr, уровень преобразования равен wmaxlev (SignalLength, Wavelet). Если floor(log2(SignalLength/(L-1))) меньше чем или равно 0, Level значения по умолчанию на пол (log2 (SignalLength)).

Частота дискретизации в герц в виде положительной скалярной величины. Если незаданный, частоты находятся в циклах/выборке, и частота Найквиста ½.

Пример: 'SamplingFrequency',5

Типы данных: double

Пользовательские коэффициенты фильтра вейвлета в виде вектор-столбца с действительным знаком или матрицы. CustomWaveletFilter должен быть вектор-столбец ровной длины для ортогонального вейвлета или матрицы 2D столбца с четным числом строк для биоортогонального вейвлета.

Это свойство применяется только когда Wavelet установлен в 'Custom'.

Пользовательские коэффициенты фильтра масштабирования в виде вектор-столбца с действительным знаком или матрицы. CustomScalingFilter должен быть вектор-столбец ровной длины для ортогонального вейвлета или матрицы 2D столбца с четным числом строк для биоортогонального вейвлета.

Это свойство применяется только когда Wavelet установлен в 'Custom'.

Функции объекта

dwtpassbandsПолосы пропускания набора фильтров DWT
filtersФильтры набора фильтров DWT
frameboundsНабор фильтров DWT структурирует границы
freqzЧастотные характеристики набора фильтров DWT
isBiorthogonalОпределите, биоортогонален ли набор фильтров DWT
isOrthogonalОпределите, является ли набор фильтров DWT ортогональным
powerbwПолоса пропускания мощности набора фильтров DWT
qfactorДобротность набора фильтров DWT
scalingfunctionsФункции масштабирования временного интервала набора фильтров DWT
waveletsВейвлеты временного интервала набора фильтров DWT
waveletsupportПоддержки времени набора фильтров DWT

Примеры

свернуть все

Создайте набор фильтров DWT с помощью значений по умолчанию.

fb = dwtfilterbank
fb = 
  dwtfilterbank with properties:

                Wavelet: 'sym4'
           SignalLength: 1024
                  Level: 7
      SamplingFrequency: 1
             FilterType: 'Analysis'
    CustomWaveletFilter: []
    CustomScalingFilter: []

Постройте частотные характеристики величины вейвлетов и функции масштабирования самой грубой шкалы. Откройте график в отдельном окне рисунка. Легенда графика в окне является интерактивной. Чтобы скрыть конкретную частотную характеристику, нажмите на ее имя.

freqz(fb)

Получите и постройте сосредоточенные временем вейвлеты, соответствующие полосовым фильтрам вейвлета.

[psi,t] = wavelets(fb);
plot(t,psi')
grid on
title('Time-Centered Wavelets')
xlabel('Time')
ylabel('Magnitude')

Figure contains an axes object. The axes object with title Time-Centered Wavelets contains 7 objects of type line.

В этом примере показано, как создать набор фильтров DWT с помощью пользовательских биоортогональных фильтров вейвлета.

Две пары анализа (разложение) и синтез (реконструкция) фильтры сопоставлены с биоортогональным вейвлетом. Каждая пара состоит из фильтра highpass и lowpass. Задайте фильтры анализа и синтеза для почти ортогональных биоортогональных вейвлетов на основе Лапласовой финансовой пирамиды Берта и Адельсона (Таблица 8.4 на странице 283 в [1]). Поскольку тулбокс требует, чтобы все фильтры, сопоставленные с биоортогональным вейвлетом или ортогональным вейвлетом, имели ту же ровную длину, фильтры предварительно ожидаются и добавляются с 0s.

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

Hd и Gd lowpass и highpass фильтры разложения, соответственно. Hr и Gr lowpass и highpass фильтры реконструкции, соответственно.

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

fbAna = dwtfilterbank('Wavelet','Custom',...
    'CustomScalingFilter',[Hd' Hr'],'CustomWaveletFilter',[Gd' Gr']);
fbSyn = dwtfilterbank('Wavelet','Custom',...
    'CustomScalingFilter',[Hd' Hr'],'CustomWaveletFilter',[Gd' Gr'],...
    'FilterType','Synthesis');
fprintf('fbAna: isOrthogonal = %d\tisBiorthogonal = %d\n',...
    isOrthogonal(fbAna),isBiorthogonal(fbAna));
fbAna: isOrthogonal = 0	isBiorthogonal = 1
fprintf('fbSyn: isOrthogonal = %d\tisBiorthogonal = %d\n',...
    isOrthogonal(fbSyn),isBiorthogonal(fbSyn ));
fbSyn: isOrthogonal = 0	isBiorthogonal = 1

Получите вейвлет и масштабирующиеся функции обоих наборов фильтров. Постройте вейвлет и масштабирующиеся функции в самых грубых шкалах.

[fbAna_phi,t] = scalingfunctions(fbAna);
[fbAna_psi,~] = wavelets(fbAna);
[fbSyn_phi,~] = scalingfunctions(fbSyn);
[fbSyn_psi,~] = wavelets(fbSyn);
subplot(2,2,1)
plot(t,fbAna_phi(end,:))
grid on
title('Analysis - Scaling')
subplot(2,2,2)
plot(t,fbAna_psi(end,:))
grid on
title('Analysis - Wavelet')
subplot(2,2,3)
plot(t,fbSyn_phi(end,:))
grid on
title('Synthesis - Scaling')
subplot(2,2,4)
plot(t,fbSyn_psi(end,:))
grid on
title('Synthesis - Wavelet')

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

Вычислите framebounds этих двух наборов фильтров. Поскольку фильтры сопоставлены с биоортогональными вейвлетами, framebounds не будет равняться 1.

[a1,a2] = framebounds(fbAna)
a1 = 0.9505
a2 = 1.0211
[b1,b2] = framebounds(fbSyn)
b1 = 0.9800
b2 = 1.0528

Получите частотные характеристики масштабирования, и вейвлеты просачивается аналитический набор фильтров. Постройте до Найквиста частотные характеристики величины масштабирования и фильтров вейвлета в самой прекрасной шкале.

[psidft,f,phidft] = freqz(fbAna);
flen = length(f);
figure
plot(f(flen/2+1:end),abs(phidft(1,flen/2+1:end)))
hold on
plot(f(flen/2+1:end),abs(psidft(1,flen/2+1:end)))
grid on
legend('Scaling','Wavelet')
title('Frequency Responses')
xlabel('Normalized Frequency')
ylabel('Magnitude')

Figure contains an axes object. The axes object with title Frequency Responses contains 2 objects of type line. These objects represent Scaling, Wavelet.

Увеличьте масштаб и подтвердите, что частотные характеристики величины при пересечении не являются величиной, равной 1. Постройте сумму величин в квадрате частотных характеристик. Поскольку масштабирующиеся (lowpass) и вейвлет (highpass) фильтры не формируют ортогональную квадратурную пару фильтра зеркала, сумма не равняется 2 на всех частотах.

figure
plot(f(flen/2+1:end),abs(phidft(1,flen/2+1:end)).^2 + abs(psidft(1,flen/2+1:end)).^2)
grid on
title('Sum of Squared Frequency Responses')
xlabel('Normalized Frequency')
ylabel('Sum of Magnitudes')

Figure contains an axes object. The axes object with title Sum of Squared Frequency Responses contains an object of type line.

Ссылки

[1] Daubechies, я. Десять лекций по вейвлетам. CBMS-NSF региональный ряд конференции в прикладной математике. Филадельфия, усилитель мощности (УМ): общество промышленной и прикладной математики, 1992.

Введенный в R2018a