def _apply(self, rhs, out): """ Wavelet transform: Decompose input vector into wavelets. Parameters ---------- rhs : RnVector RnVector of dimension n to be transformed. out : RnVector RnVector of dimension n the result should be written to. Returns ------- RnVector of dimension n of wavelet transformed input RnVector of dimension n. Examples -------- >>> n = 10 >>> rn = Rn(n) >>> data = rn.element(range(n)) >>> decompose = WaveletDecompose(n) >>> decomposedData = decompose(data) >>> print(decomposedData) [ 2.03223267e-01 -8.87556695e-12 -1.47952761e-11 -1.48388367e-01 7.03223267e-01 5.09930045e-01 -7.44210796e-01 -3.41010069e-01 1.78491552e+01 1.38856477e+02] """ tmp = rhs.copy() wl.wavelet_transform1D(tmp.data.ctypes.data, self.domain.n, out.data.ctypes.data)
import numpy as np import libwaveletspy as lw import matplotlib.pyplot as plt n = 1000 x = np.linspace(0, 3.14, n, dtype=np.float64) data = np.sin(3 * x) + np.exp(x / 5) + np.cos(1 / (0.01 + x)) wavelets = np.zeros_like(x) result = np.zeros_like(x) dataCpy = data.copy() lw.wavelet_transform1D(dataCpy.ctypes.data, n, wavelets.ctypes.data) lw.invwavelet_transform1D(wavelets.ctypes.data, n, result.ctypes.data) plt.plot(data, label="data") plt.plot(result, label="result") plt.legend() plt.show()
import numpy as np import libwaveletspy as lw import matplotlib.pyplot as plt n=1000 x = np.linspace(0, 3.14, n, dtype=np.float64) data = np.sin(3*x) + np.exp(x/5) + np.cos(1/(0.01+x)) wavelets = np.zeros_like(x) result = np.zeros_like(x) dataCpy = data.copy() lw.wavelet_transform1D(dataCpy.ctypes.data, n, wavelets.ctypes.data) lw.invwavelet_transform1D(wavelets.ctypes.data, n, result.ctypes.data) plt.plot(data, label="data") plt.plot(result, label="result") plt.legend() plt.show()