В этом примере показано, как использовать подъем сигнала 1-D.
Создайте 1-D сигнал, который является кусочно постоянным для 2 выборок. Добавьте к сигналу шум N (0,0.12 ).
x = [1 1 2 2 -3.5 -3.5 4.3 4.3 6 6 -4.5 -4.5 2.2 2.2 -1.5 -1.5];
x = repmat(x,1,64);
rng default
x = x+ 0.1*randn(size(x));Постройте график сигнала и увеличьте масштаб первых 100 выборок для визуализации корреляции в соседних выборках.
plot(x) xlim([0 100]) title('Signal') xlabel('Index') ylabel('Amplitude')

Используйте ленивый вейвлет, чтобы получить четные и нечетные полифазные компоненты сигнала. Постройте график коэффициентов детализации (вейвлета) в Dи наблюдать, что это преобразование не декоррелировало сигнал. Вейвлет-коэффициенты очень похожи на сигнал.
LS = liftingScheme; [A,D] = lwt(x,'LiftingScheme',LS,'Level',1); plot(D{1}) xlim([0 100]) title('Detail Coefficients') xlabel('Index') ylabel('Amplitude')

Добавьте шаг подъема прогноза, который вычитает коэффициент четного индекса из нечетного коэффициента на одну выборку позже, (2n).
ElemLiftStep = liftingStep('Type','predict','Coefficients',-1,'MaxOrder',0); LSnew = addlift(LS,ElemLiftStep);
Поскольку сигнал является кусочно постоянным по последовательным выборкам с аддитивным шумом, новый этап предсказания должен привести к получению вейвлет-коэффициентов, малых по абсолютному значению. В этом случае вейвлет-преобразование декоррелирует данные. Проверьте это, найдя коэффициенты аппроксимации и детализации с помощью нового шага прогнозирования.
[A,D] = lwt(x,'liftingScheme',LSnew,'Level',1);
При построении графика коэффициентов детализации (вейвлет) видно, что вейвлет-коэффициенты больше не напоминают исходный сигнал.
plot(D{1})
xlim([0 100])
title('Detail Coefficients')
xlabel('Index')
ylabel('Amplitude')
Коэффициенты аппроксимации, A, предыдущего преобразования составляют четную многофазную составляющую сигнала. Следовательно, на коэффициенты влияет наложение псевдонимов. Используйте шаг подъема обновления, чтобы обновить коэффициенты аппроксимации и уменьшить сглаживание. Этап обновления заменяет коэффициенты аппроксимации на -x (2n)), что равно x и x (2n + 1). Усреднение - это фильтрация нижних частот, которая помогает уменьшить сглаживание.
ElemLiftStep = liftingStep('Type','update','Coefficients',1/2,'MaxOrder',0); LSnew = addlift(LSnew,ElemLiftStep);
Используйте новую схему подъема для получения вейвлет-преобразования входного сигнала. Коэффициенты аппроксимации напоминают гладкую версию исходного сигнала.
[A,D] = lwt(x,'liftingScheme',LSnew,'Level',1); plot(A) xlim([0 100])

Создание новой схемы подъема с теми же шагами подъема, что и LSnew. Применение коэффициентов масштабирования для обеспечения идеальной реконструкции. Получение аппроксимационных и вейвлет-коэффициентов по схеме подъема и восстановление сигнала с помощью ilwt. Проверьте идеальную реконструкцию.
scaleFactors = [sqrt(2) sqrt(2)/2]; ElemLiftStep1 = liftingStep('Type','predict','Coefficients',-1,'MaxOrder',0); ElemLiftStep2 = liftingStep('Type','update','Coefficients',1/2,'MaxOrder',0); LSscale = liftingScheme('LiftingSteps',[ElemLiftStep1;ElemLiftStep2],'NormalizationFactors',scaleFactors); [A,D] = lwt(x,'liftingScheme',LSscale,'Level',1); xrecon = ilwt(A,D,'liftingScheme',LSscale); max(abs(x(:)-xrecon(:)))
ans = 1.7764e-15
В предыдущем примере был разработан вейвлет, который эффективно удалял многочлен нулевого порядка (константа). Если поведение сигнала лучше представить многочленом более высокого порядка, можно сконструировать двойной вейвлет с соответствующим количеством моментов исчезновения для декорреляции сигнала.
Используйте схему подъема, чтобы создать вейвлет с двумя моментами исчезновения. Двойной вейвлет с двумя моментами исчезновения декоррелирует сигнал с локальным поведением, аппроксимируемым полиномом первого порядка. Создайте сигнал, характеризующийся полиномиальным поведением первого порядка с аддитивным ).
y = [1 0 0 4 0 0 -1 0 0 2 0 0 7 0 0 -4 0 0 1 0 0 -3]; x1 = 1:(21/1024):22-(21/1024); y1 = interp1(1:22,y,x1,'linear'); rng default y1 = y1+0.25*randn(size(y1)); plot(x1,y1) xlim([1 22])

В этом случае вейвлет-коэффициенты должны удалять полином первого порядка. Если значение сигнала с нечетным индексом, 1), хорошо аппроксимируется многочленом первого порядка, подгоняемым к окружающим значениям выборки, (2n + 2)) должен обеспечить для x (2n + 1). словами, x (2n + 1) должно быть средней точкой (2n) и x (2n + 2).
Отсюда следует, что x (2n + 2)) должен декоррелировать сигнал.
Создайте новую схему подъема с прогнозным шагом подъема, который моделирует предыдущее уравнение.
ElemLiftStep = liftingStep('Type','predict','Coefficients',[-1/2 -1/2],'MaxOrder',1); LS = liftingScheme('LiftingSteps',ElemLiftStep,'NormalizationFactors',1);
Используйте схему подъема для получения коэффициентов аппроксимации и детализации и постройте график результата.
[A,D] = lwt(y1,'LiftingScheme',LS,'Level',1); subplot(2,1,1) plot(A) xlim([1 512]) title('Approximation Coefficients') subplot(2,1,2) plot(D{1}) xlim([1 512]) title('Detail Coefficients')

Видно, что вейвлет-коэффициенты содержат только шум, в то время как аппроксимационные коэффициенты представляют денозованную версию исходного сигнала. Поскольку при предыдущем преобразовании для коэффициентов аппроксимации используется только компонент четной многофазности, можно уменьшить сглаживание путем добавления шага обновления.
Создайте новую схему подъема, состоящую из предыдущего шага прогнозирования и нового шага обновления, уменьшающего сглаживание. Нормализуйте схему подъема, чтобы создать идеальный набор восстановительных фильтров. Получите дискретное вейвлет-преобразование с новой схемой подъема и постройте график результатов.
scaleFactors = [sqrt(2) sqrt(2)/2]; ElemLiftStep1 = liftingStep('Type','predict','Coefficients',[-1/2 -1/2],'MaxOrder',1); ElemLiftStep2 = liftingStep('Type','update','Coefficients',[1/4 1/4],'MaxOrder',0); LSnew = liftingScheme('LiftingSteps',[ElemLiftStep1;ElemLiftStep2],'NormalizationFactors',scaleFactors); [A,D] = lwt(y1,'liftingScheme',LSnew,'Level',1); subplot(2,1,1) plot(A) xlim([1 512]) title('Approximation Coefficients') subplot(2,1,2) plot(D{1}) xlim([1 512]) title('Detail Coefficients')

Продемонстрируйте, что вы разработали идеальный банк фильтров реконструкции.
y2 = ilwt(A,D,'liftingScheme',LSnew);
max(abs(y2(:)-y1(:)))ans = 1.7764e-15