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')

В этом примере показано, как создать набор фильтров 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')

Вычислите 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')

Увеличьте масштаб и подтвердите, что частотные характеристики величины при пересечении не являются величиной, равной 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')

Ссылки

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

Введенный в R2018a