Пакет Python для дискретного вейвлет-преобразования с максимальным перекрытием (MODWT)
Я должен использовать python для воспроизведения результатов из статьи, где используется MODWT. В настоящее время я использую PyWT, и он имеет только стационарное вейвлет-преобразование (SWT). Я немного исследую, и кажется, что в настоящее время нет пакета для MODWT, и я также считаю, что многие говорят, что SWT и MODWT - это одно и то же. Но результаты MODWT с использованием MATLAB и SWT из python отличаются. Есть ли какой-нибудь пакет в Python, который я могу использовать для непосредственного выполнения MODWT? Или я могу добиться результатов в MODWT с помощью SWT?
2 ответа
Недавно я прочитал книгу о вейвлете,
Персиваль Д.Б. и А.Т. Уолден. Вейвлет-методы для анализа временных рядов. Кембридж, Великобритания: издательство Кембриджского университета, 2000
После этого я выполнил алгоритмы для анализа modwt и multiresolution с использованием python. Код Python можно найти в github здесь. Может быть, это полезно для вас.
Другой вариант: установите API для использования Matlab из Python, как описано в https://es.mathworks.com/help/matlab/matlab_external/install-the-matlab-engine-for-python.html.
Затем вы можете использовать MODWT Matlab из Python:
import matlab.engine
future = matlab.engine.start_matlab(background=True) # Starts Matlab on the background, meanwhile Python can execute more commands
import numpy as np
x = np.sin(2 * np.pi * np.arange(100) / 20) + np.random.randn(100)
# Transfiere la señal desde Python a MATLAB
eng.workspace['x'] = x
# Realizar la MODWT en MATLAB
wavelet = 'db4' # Nombre de la wavelet (puedes cambiarlo)
level = 5 # Nivel de descomposición
# Llama a la función modwt de MATLAB
eng.eval(f"wcoefs = modwt(x, '{wavelet}', {level})", nargout=0)
# Recupera los coeficientes de detalle y aproximación desde MATLAB
eng.eval("detail_coefficients = wcoefs(end, :)", nargout=0)
eng.eval("approximation_coefficients = wcoefs(1, :)", nargout=0)
# Transfiere los resultados desde MATLAB a Python
detail_coefficients = eng.workspace['detail_coefficients']
approximation_coefficients = eng.workspace['approximation_coefficients']
# Puedes imprimir o graficar los coeficientes según tus necesidades
print("Coeficientes de detalle en el nivel", level, ":", detail_coefficients)
print("Coeficientes de aproximación:", approximation_coefficients)
eng.quit()