Сигналы с очень быстрой эволюцией, такие как переходные сигналы в динамических системах, могут подвергаться резким изменениям, таким как скачок или резкое изменение первой или второй производной. Анализ Фурье обычно не способен обнаружить эти события. Целью этого примера является показать, как анализ вейвлетами может обнаружить точный момент, когда сигнал изменяется, а также тип (разрыв сигнала или резкое изменение его первой или второй производной) и амплитуду изменения. При обработке изображения одним из основных приложений является обнаружение краев, которое также включает в себя обнаружение резких изменений.
Короткие вейвлеты часто более эффективны, чем длинные, при обнаружении разрыва сигнала. Поэтому для идентификации разрыва сигнала мы будем использовать вейвлет Хаара. Прерывистый сигнал состоит из медленной синусоидальной волны, за которой резко следует средняя синусоидальная волна.
load freqbrk
x = freqbrk;
Вычислите многоуровневую 1-D вейвлет-декомпозицию на уровне 1.
level = 1;
[c,l] = wavedec(x,level,'haar');
Извлеките коэффициенты детализации уровня 1 из вейвлет-разложения и визуализируйте результат. Интерполяция коэффициентов детализации таким образом, чтобы они и сигнал имели одинаковую длину.
d1 = detcoef(c,l,level);
subplot(2,1,1)
plot(x)
subplot(2,1,2)
plot(interpft(d1,2*length(d1)))
ylabel('d1')

Подробности первого уровня (d1) наиболее четко показать разрыв, потому что разрыв содержит высокочастотную часть. Разрыв локализован очень точно около времени = 500.
Наличие шума усложняет идентификацию разрывов. Если более мелкие уровни разложения могут быть использованы для устранения значительной части шума, разрыв иногда виден на более грубых уровнях разложения.
Целью этого примера является показать, как анализ вейвлетами может обнаружить разрыв в одной из производных сигнала. Сигнал, хотя, по-видимому, является единственной гладкой кривой, на самом деле состоит из двух отдельных экспоненциалов.
load scddvbrk; x = scddvbrk; level = 2; [c,l] = wavedec(x,level,'db4'); [d1,d2] = detcoef(c,l,1:level); d1up = dyadup(d1,0); d2up = dyadup(dyadup(d2,0),0); subplot(3,1,1) plot(x) xlim([400 600]) subplot(3,1,2) plot(d1up) ylabel('d1') xlim([400 600]) subplot(3,1,3) plot(d2up) ylabel('d2') xlim([400 600])

Мы увеличили среднюю часть сигнала, чтобы более четко показать, что происходит вокруг времени = 500. Детали высоки только в середине сигнала и ничтожны в других местах. Это говорит о наличии высокочастотной информации - внезапном изменении или разрыве - около времени = 500.
Следует отметить, что для обнаружения сингулярности выбранный вейвлет должен быть достаточно регулярным, что подразумевает большую импульсную характеристику фильтра. Регулярность может быть важным критерием при выборе вейвлета. Мы выбрали использование db4, что достаточно регулярно для этого анализа. Если бы мы выбрали вейвлет Хаара, разрыв не был бы обнаружен. Если вы попытаетесь повторить этот анализ, используя вейвлет Хаара на уровне 2, вы заметите, что детали равны нулю в момент времени = 500.
Для изображений двумерное дискретное вейвлет-преобразование приводит к разложению коэффициентов аппроксимации на уровне j в четырёх компонентах: аппроксимации на уровне j + 1, а деталей в трёх ориентациях (горизонтальной, вертикальной и диагональной).
load tartan; level = 1; [c,s] = wavedec2(X,level,'coif2'); [chd1,cvd1,cdd1] = detcoef2('all',c,s,level);
subplot(1,2,1) image(X) colormap(map) title('Original Image') subplot(1,2,2) image(chd1) colormap(map) title('Horizontal Edges')

subplot(1,2,1) image(cvd1) colormap(map) title('Vertical Edges') subplot(1,2,2) image(cdd1) colormap(map) title('Diagonal Edges')
