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