Так называемые вейвлеты первого поколения и масштабирующиеся функции являются двухместными расширениями, и переводит одной функции. Методы Фурье играют ключевую роль в проекте этих вейвлетов. Однако требование, чтобы базис вейвлета состоял из, переводит и расширяет одной функции, налагает некоторые ограничения, которые ограничивают утилиту идеи мультиразрешения в ядре анализа вейвлета.
Утилита методов вейвлета расширена проектом вейвлетов второго поколения через подъем.
Типичные настройки, где перевод и расширение одной функции не могут использоваться, включают:
При разработке вейвлетов на ограниченных областях — Это включает конструкцию вейвлетов через определенный интервал или ограниченную область в более многомерном Евклидово пространстве.
Необходимы взвешенные вейвлеты — В определенных приложениях, таких как решение дифференциальных уравнений с частными производными, вейвлеты, биоортогональные относительно взвешенного скалярного произведения.
Нерегулярно распределенные данные — Во многих реальных приложениях, интервал выборки между выборками данных не равен.
Разработка новых вейвлетов первого поколения требует экспертных знаний в анализе Фурье. Поднимающийся метод, предложенный Sweldens (см. [Swe98] в Ссылках), удаляет необходимость экспертных знаний в анализе Фурье и позволяет вам генерировать бесконечное число дискретных биоортогональных вейвлетов, начинающих с начального. В дополнение к генерации вейвлетов первого поколения с подъемом поднимающийся метод также позволяет вам спроектировать вейвлеты второго поколения, которые не могут быть созданными с использованием основанными на Фурье методами. С подъемом можно спроектировать вейвлеты, которые обращаются к недостаткам вейвлетов первого поколения.
Для получения дополнительной информации о подъеме см. [Swe98], [Mal98], [StrN96] и [MisMOP03] в Ссылках.
DWT, реализованный набором фильтров, задан четырьмя фильтрами как описано в Алгоритме Быстрого преобразования вейвлета (FWT). Два основных свойства интереса
Совершенное свойство реконструкции
Ссылка с “истинными” вейвлетами (как сгенерировать, начинающий с фильтров, ортогональных или биоортогональных базисов пробела функций конечной энергии),
Чтобы проиллюстрировать совершенное свойство реконструкции, следующий набор фильтров содержит два фильтра разложения и два фильтра синтеза. Фильтры разложения и синтеза могут составить пару биоортогональных базисов или ортогонального базиса. Прописные буквы обозначают Z-преобразования фильтров.
Это приводит к следующим двум условиям для набора фильтров совершенной реконструкции (PR):
и
Первое условие обычно (неправильно) называется совершенным условием реконструкции, и вторым является сглаживающееся условие.
термин подразумевает, что совершенная реконструкция достигается до задержки одной выборки меньше, чем длина фильтра, L. Это заканчивается, если аналитические фильтры смещены, чтобы быть причинными.
При подъеме проектов совершенные наборы фильтров реконструкции путем начала с основного характера вейвлета преобразовывают. Вейвлет преобразовывает сборку разреженные представления путем использования корреляции, свойственной от большинства данных о реальном мире. Например, постройте пример потребления электричества за 3-дневный период.
load leleccum plot(leleccum) grid on axis tight title('Electricity Consumption')
Многофазное представление сигнала является важной концепцией в подъеме. Можно просмотреть каждый сигнал как состоящий из фаз, которые состоят из взятия каждого N-th выборка, начинающаяся с некоторого индекса. Например, если вы индексируете временные ряды от n =0 и берете любой демонстрационный запуск в n =0, вы извлекаете ровные выборки. Если вы берете любой демонстрационный запуск с n =1, вы извлекаете нечетные выборки. Это четные и нечетные многофазные компоненты данных. Поскольку ваш шаг между выборками равняется 2, существует только две фазы. Если вы увеличили свой шаг до 4, можно извлечь 4 фазы. Для подъема достаточно сконцентрироваться на четных и нечетных многофазных компонентах. Следующая схема иллюстрирует эту операцию для входного сигнала.
где Z обозначает модульный оператор усовершенствования, и направленная вниз стрелка с номером 2 представляет субдискретизацию два. На языке подъема операция разделения входного сигнала на четные и нечетные компоненты известна как операцию разделения или ленивый вейвлет.
Чтобы изучить подъем математически, необходимо изучить представление z-области четных и нечетных многофазных компонентов.
Z-преобразование ровного многофазного компонента
Z-преобразование нечетного многофазного компонента
Можно записать z-преобразование входного сигнала как сумма расширенных версий z-преобразований многофазных компонентов.
Один поднимающийся шаг может быть описан следующими тремя основными операциями:
Разделите — сигнал на непересекающиеся компоненты. Распространенный способ сделать это должно извлечь четные и нечетные многофазные компоненты, объясненные в Многофазном Представлении. Это также известно как ленивый вейвлет.
Предскажите — нечетное многофазное компонентно-ориентированное на линейной комбинации выборок ровного многофазного компонента. Выборки нечетного многофазного компонента заменяются различием между нечетным многофазным компонентом и ожидаемым значением.
Обновление — даже многофазный компонентно-ориентированный на линейной комбинации выборок различия, полученных из предсказать шага.
На практике нормализация включена для обоих операции предсказывания и обновления.
Следующая схема иллюстрирует один поднимающийся шаг.
Используя операции в Разделении, Предскажите, и Обновление, можно реализовать вейвлет Хаара через подъем.
Разделите — Делят сигнал на четные и нечетные многофазные компоненты
Предскажите — замена с . Предсказать оператор просто .
Обновление — замена с . Это равно .
Предсказать оператор в Z-области может быть написан в следующей матричной форме:
с .
Оператор обновления может быть написан в следующей матричной форме:
с .
Наконец, обновление и предсказывает, что нормализация может быть включена можно следующим образом:
Можно использовать liftingScheme
создать поднимающуюся схему, сопоставленную с вейвлетом Хаара.
lscHaar = liftingScheme('Wavelet','haar'); disp(lscHaar)
Wavelet : 'haar' LiftingSteps : [2 × 1] liftingStep NormalizationFactors : [1.4142 0.7071] CustomLowpassFilter : [] Details of LiftingSteps : Type: 'predict' Coefficients: -1 MaxOrder: 0 Type: 'update' Coefficients: 0.5000 MaxOrder: 0
Обратите внимание на то, что для удобства, знак минус включен в predict
подъем шага. Элементы NormalizationFactors
, 1.4142 и
0.7071
, предсказывание и обновляет коэффициенты нормализации, соответственно. MaxOrder
дает самую высокую степень полинома Лорана, который описывает соответствующий поднимающийся шаг. В этом случае оба - нуль, потому что предсказывание и обновление подъемы оба описаны скалярами.
Этот пример представляет поднимающуюся схему bior2.2
биоортогональное масштабирование и фильтры вейвлета.
В Хааре, снимающем схему, предсказать оператор differenced четные и нечетные выборки. В этом примере задайте новое, предсказывают оператор, который вычисляет среднее значение двух, соседних даже выборки. Вычтите среднее значение из прошедшей нечетной выборки.
В Z-области можно записать предсказать оператор как
Чтобы получить оператор обновления, исследуйте оператор обновления в Вейвлете Хаара Через Подъем. Обновление задано таким способом, которым сумма коэффициентов приближения пропорциональна среднему значению вектора входных данных.
Чтобы получить тот же результат на этом поднимающемся шаге, задайте обновление как
Можно использовать liftingScheme
получить поднимающуюся схему.
lscBior = liftingScheme('Wavelet','bior2.2'); disp(lscBior)
Wavelet : 'bior2.2' LiftingSteps : [2 × 1] liftingStep NormalizationFactors : [1.4142 0.7071] CustomLowpassFilter : [] Details of LiftingSteps : Type: 'predict' Coefficients: [-0.5000 -0.5000] MaxOrder: 1 Type: 'update' Coefficients: [0.2500 0.2500] MaxOrder: 0
В этом примере показано, как добавить элементарный поднимающийся шаг в поднимающуюся схему.
Создайте поднимающуюся схему, сопоставленную с вейвлетом Хаара.
lsc = liftingScheme('Wavelet','haar'); disp(lsc)
Wavelet : 'haar' LiftingSteps : [2 × 1] liftingStep NormalizationFactors : [1.4142 0.7071] CustomLowpassFilter : [] Details of LiftingSteps : Type: 'predict' Coefficients: -1 MaxOrder: 0 Type: 'update' Coefficients: 0.5000 MaxOrder: 0
Создайте update
элементарный поднимающийся шаг. Добавьте шаг к поднимающейся схеме.
els = liftingStep('Type','update','Coefficients',[-1/8 1/8],'MaxOrder',0); lscNew = addlift(lsc,els); disp(lscNew)
Wavelet : 'custom' LiftingSteps : [3 × 1] liftingStep NormalizationFactors : [1.4142 0.7071] CustomLowpassFilter : [] Details of LiftingSteps : Type: 'predict' Coefficients: -1 MaxOrder: 0 Type: 'update' Coefficients: 0.5000 MaxOrder: 0 Type: 'update' Coefficients: [-0.1250 0.1250] MaxOrder: 0
Получите фильтры разложения и реконструкции из новой поднимающейся схемы.
[lod,hid,lor,hir] = ls2filt(lscNew);
Используйте bswfun
к графику получившаяся функция масштабирования и фильтр.
bswfun(lod,hid,lor,hir,'plot');
В нескольких приложениях желательно иметь вейвлет, преобразовывают, который сопоставляет целочисленные входные параметры с целочисленным масштабированием и коэффициентами вейвлета. Можно выполнить легко подъем использования.
Создайте поднимающуюся схему, сопоставленную с вейвлетом Хаара. Добавьте элементарный поднимающийся шаг в поднимающуюся схему.
lsc = liftingScheme('Wavelet','haar'); els = liftingStep('Type','update','Coefficients',[-1/8 1/8],'MaxOrder',0); lscNew = lsc.addlift(els);
Создайте сигнал с целочисленным знаком. Получите преобразование вейвлета от целого числа к целому числу сигнала от LWT, с помощью поднимающейся схемы, с 'Int2Int'
установите на true
.
rng default sig = randi(20,16,1); [ca,cd] = lwt(sig,'LiftingScheme',lscNew,'Int2Int',true);
Подтвердите, что коэффициенты приближения являются всеми целыми числами.
max(abs(ca-floor(ca)))
ans = 0
Подтвердите, что коэффициенты детали являются всеми целыми числами.
len = length(cd); for k=1:len disp([k, max(abs(cd{k}-floor(cd{k})))]); end
1 0 2 0 3 0 4 0
Инвертируйте преобразование и продемонстрируйте совершенную реконструкцию.
xrec = ilwt(ca,cd,'LiftingScheme',lscNew,'Int2Int',true); max(abs(xrec-sig))
ans = 0