Новый вейвлет для CWT

Этот пример иллюстрирует, как сгенерировать новый вейвлет, начинающий с шаблона.

Принцип для разработки нового вейвлета для CWT должен аппроксимировать данный шаблон с помощью оптимизации наименьших квадратов при ограничительном продвижении к допустимому вейвлету, которому хорошо удовлетворяют для обнаружения шаблона с помощью непрерывного вейвлета, преобразовывают [1].

Загрузите исходный шаблон: псевдо синус.

load ptpssin1
who
Your variables are:

IntVAL   X        Y        caption  

Переменные X и Y содержите шаблон. Интегрируйте шаблон на интервале [0, 1]. Постройте шаблон.

dX = max(diff(X));
patternInt = dX*sum(Y);
disp(['Integral of pattern = ',num2str(patternInt)]);
Integral of pattern = 0.15915
plot(X,Y)
title('Original Pattern')
grid on

Шаблон на интервале [0, 1] объединяется к 0,15915. Таким образом, это не вейвлет, но это - хороший кандидат, поскольку это колеблется как вейвлет.

Чтобы синтезировать новый вейвлет, адаптированный к данному шаблону, используйте полиномиальное приближение наименьших квадратов степени 6 с ограничениями непрерывности вначале и конца шаблона.

[psi,xval,nc] = pat2cwav(Y, 'polynomial',6, 'continuous');

Новый вейвлет дан xval и nc*psi.

figure
plot(X,Y,'-',xval,nc*psi,'--')
grid on
legend('Original Pattern','Adapted Wavelet','Location','NorthWest')

Проверяйте тот psi удовлетворяет определению вейвлета путем подтверждения, что оно объединяется, чтобы обнулить и имеет L2 норма равна 1.

dxval = max(diff(xval));
newWaveletIntegral = dxval*sum(psi);
disp(['Integral of new wavelet = ',num2str(newWaveletIntegral)])
Integral of new wavelet = 1.9626e-05
newWaveletSqN = dxval*sum(psi.^2);
disp(['New wavelet has L2-norm = ',num2str(newWaveletSqN)])
New wavelet has L2-norm = 1

Ссылки

[1] Мизити, M., И. Мизити, Г. Оппенхейм и J.-M. Poggi. Приложения Les ondelettes et leurs. Франция: Гермес Science/Lavoisier, 2003.

Смотрите также