最大重叠离散小波变换(MODWT)的Python包

问题描述 投票:0回答:2

我必须使用 python 来重现使用 MODWT 的论文的结果。我目前正在使用 pywt,它只有平稳小波变换(SWT)。我研究了一下,似乎目前没有 MODWT 的软件包,而且我还发现很多人说 SWT 和 MODWT 是同一件事。但是使用 MATLAB 的 MODWT 和使用 python 的 SWT 的结果是不同的。 python中有没有可以用来直接执行MODWT的包?或者我可以使用 SWT 在 MODWT 中获得结果吗?

wavelet wavelet-transform pywavelets
2个回答
11
投票

最近看了小波的书,

Percival、D. B. 和 A. T. Walden。用于时间序列分析的小波方法。英国剑桥:剑桥大学出版社,2000 年

接下来,我使用 python 执行了 modwt 和多分辨率分析的算法。 python 代码可以在 github here 中找到。也许对你有用。


0
投票

另一个选项:安装 api 以从 python 使用 Matlab,如 https://es.mathworks.com/help/matlab/matlab_external/install-the-matlab-engine-for-python.html

中所述

然后你可以使用Python中的Matlab的modwt:

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()
© www.soinside.com 2019 - 2024. All rights reserved.