Введение
При проведении CWT анализа средствами библиотеки PyWavelets (бесплатное программное обеспечение с открытым исходным кодом, выпущенное по лицензии MIT) возникают проблемы с визуализацией результата. Предложенная разработчиками тестовая программа по визуализации приведена в следующем листинге:
Листинг
import pywt
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(-1, 1, 200, endpoint=False)
sig = np.cos(2 * np.pi * 7 * t) + np.real(np.exp(-7*(t-0.4)**2)*np.exp(1j*2*np.pi*2*(t-0.4)))
widths = np.arange(1, 31)
cwtmatr, freqs = pywt.cwt(sig, widths, 'cmor1-1.5')
plt.imshow(cwtmatr, extent=[-1, 1, 1, 31], cmap='PRGn', aspect='auto',
vmax=abs(cwtmatr).max(), vmin=-abs(cwtmatr).max()) # doctest: +SKIP
plt.show() # doctest: +SKIP
При работе с комплексными вейвлетами, например с 'cmor1-1.5', программа выдаёт ошибку:
File"C:UsersUserAppDataLocalProgramsPythonPython36libsite-packagesmatplotlibimage.py", line 642, in set_data
raise TypeError("Image data cannot be converted to float")
TypeError: Image data cannot be converted to float
Указанная ошибка, а так же сложности с выбором масштаба (widths) для обеспечения необходимого временного разрешения, затрудняют, особенно для начинающих пользователей, изучение CWT анализа, что и побудило меня к написанию данной статьи учебного характера.
Целью настоящей публикации является рассмотрение применения нового модуля визуализации scaleogram для анализа простых и специальных сигналов, а так же при использовании методов нормализации, логарифмического масштабирования и синтеза, которые позволяют получить дополнительную информацию при анализе временных рядов.
Читать полностью »