Bonjour,
dans le cadre d'un projet je dois écrire un programme en Python permettant de représenter la fonction d'échelle et l'ondelette de Battle-Lemarié pour les splines d'ordre 1 et 2.
Pour la spline d'ordre 1, je trace la fonction de la manière suivante :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
import numpy as np
import matplotlib.pyplot as plt
 
x=np.linspace(-1.5,1.5,1024)
 
def phi(x):
    p=[]
    for i in range(len(x)):
        if abs(x[i])<=1:
            p.append(1-abs(x[i]))
        else:
            p.append(0)
    return p
 
plt.plot(x,phi(x),'b',x,phi(2*x),'g',x,[elt/2. for elt in phi(2*x+1)],'g',x,[elt/2. for elt in phi(2*x-1)],'g')
plt.show()
La fonction phi n'étant pas orthogonale à ses translatées il faut modifier phi pour obtenir une fonction phi_diese dont on ne connait que la transformée de Fourier.
Afin de retrouver cette fonction, voici ce que je code :
Code :
1
2
3
4
5
6
7
8
9
 
def ftphidiese(x):
    ftphid=[]
    for i in range(len(x)):
        ftphid.append((np.sqrt(3.)*4.*(np.sin(x[i]/2.))**2)/(np.sqrt(2*np.pi)*(x[i]**2)*np.sqrt(1.+2.*(np.cos(x[i]/2.))**2)))
    return ftphid
phidiese=np.fft.fftshift(np.fft.ifft(np.fft.ifftshift(ftphidiese(x))))
plt.plot(x,phidiese)
plt.show()
Malheureusement le résultat n'est pas le bon, la fonction est "écrasée".
Pour plus détail sur phi_diese, voir la page 158 de "ten lectures on wavelets" http://fr.scribd.com/doc/13764338/Te...es-on-Wavelets.
Quelqu'un peut-il m'aider ?
Merci.