Этот пример иллюстрирует, как генерировать новый вейвлет, начиная с шаблона.
Принцип проектирования нового вейвлета для CWT заключается в аппроксимации заданного шаблона с использованием оптимизации наименьших квадратов при ограничениях, приводящих к допустимому вейвлету, хорошо подходящему для обнаружения шаблона с использованием непрерывного вейвлет-преобразования [1].
Загрузить исходный образец: псевдосинус.
load ptpssin1
whoYour 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] Мисити, М., Я. Мисити, Г. Оппенгейм и Ж.-М. Погги. Les ondelettes et leurs applications. Франция: Hermes Science/Lavoisier, 2003.