exponenta event banner

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 и CustomShiedFilter.

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

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

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

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

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

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

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

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

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

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

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

Это свойство применяется только в том случае, если 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. The axes with title Time-Centered Wavelets contains 7 objects of type line.

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

Две пары фильтров анализа (разложения) и синтеза (реконструкции) связаны с биоргональным вейвлетом. Каждая пара состоит из фильтра нижних и верхних частот. Укажите фильтры анализа и синтеза для почти ортогональных биоргональных вейвлетов на основе схемы лапласианской пирамиды Берта и Адельсона (таблица 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 - фильтры разложения нижних и верхних частот соответственно. Hr и Gr являются фильтрами восстановления нижних и верхних частот соответственно.

Построение банков фильтров 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

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

[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. Постройте график суммы квадратов частотных откликов. Поскольку фильтры масштабирования (нижних частот) и вейвлет (верхних частот) не образуют пары ортогональных квадратурных зеркальных фильтров, сумма не равна 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. Десять лекций по вейвлетам. Серия региональных конференций CBMS-NSF по прикладной математике. Филадельфия, Пенсильвания: Общество промышленной и прикладной математики, 1992.

Представлен в R2018a