dwtfilterbank

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

Описание

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

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

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

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

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

Создание

Описание

пример

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

пример

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

Для примера, fb = dwtfilterbank('SignalLength',1000,'Wavelet','bior4.4') создает группу фильтров DWT для сигналов длины 1000 с помощью биортогональной 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 должен быть вектором-столбцом четной длины для ортогонального вейвлета или двухколоночной матрицы с четным количеством строк для биортогонального вейвлета.

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

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

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

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

dwtpassbandsПолосы пропускания банка фильтров DWT
filtersФильтры банка фильтров DWT
frameboundsГраницы банковской системы координат DWT-фильтра
freqzDWT фильтрация bank частотных характеристик
isBiorthogonalОпределите, является ли банк фильтров DWT биортогональным
isOrthogonalОпределите, является ли банк фильтров DWT ортогональным
powerbwDWT-фильтр пропускной полосы пропускания мощности
qfactorКоэффициент качества банка фильтров DWT
scalingfunctionsDWT фильтрация банковских функций масштабирования во временной области
waveletsDWT-фильтр, вейвлеты временной области банка
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. The axes with title Time-Centered Wavelets contains 7 objects of type line.

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

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

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. Axes 1 with title Analysis - Scaling contains an object of type line. Axes 2 with title Analysis - Wavelet contains an object of type line. Axes 3 with title Synthesis - Scaling contains an object of type line. Axes 4 with title Synthesis - Wavelet contains an object of type line.

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

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

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

[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. The axes 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. The axes with title Sum of Squared Frequency Responses contains an object of type line.

Ссылки

[1] Daubechies, I. Ten Lectures on Wavelets. Серия региональных конференций CBMS-NSF по прикладной математике. Филадельфия, Пенсильвания: Общество промышленной и прикладной математики, 1992.

Введенный в R2018a