dwtfilterbank

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

Описание

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

Создание

Синтаксис

fb = dwtfilterbank
fb = dwtfilterbank(Name,Value)

Описание

пример

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

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

Примечание

Вы не можете изменить значение свойства существующего набора фильтров. Например, если у вас есть набор фильтров 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' использует фильтры реконструкции.

Вейвлет преобразовывает уровень, заданный как положительное целое число, меньше чем или равное floor(log2(SignalLength)). По умолчанию уровень равен 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 должен быть вектор-столбцом ровной длины для ортогонального вейвлета или матрицы 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