Bonjour
j'ai un programme en MAPLE qui fait la compression d'un signal 1D avec la trasformé en ondelettes, et je veux le convertir en MATLAB. ESt ce qu'il ya quelqu'un qui peut m'aider?
voila le programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
% DecompCanonique
DecomCanonique:=proc(n,f,b)
global i,k,phi,c:
# on définit la base canonique des phi(n,k) de V_j
phi:=(n,k,x)-> piecewise(x>=k/(2^n) and x<(k+1)/(2^n),2^(n/2),0);
# on calcule alors les composants c(n,k) de f sur la base de V_n
for k from 0 to 2^n-1 do # 2^n est la dimension de V_n donc le nombre de phi(n,k)
c[n,k]:=int(f(x)*phi(n,k,x),x=0...1):
od:
if (b=1) then # si on veut tracer le signal
plot(sum(c[n,i]*phi(n,i,x),i=0..2^n-1),x=0..1,style=line,thichness=[2],title="Représentation de la décomposition canonique du signal",titlefont=[HELVETICA,BOLD,10]);
fi:
end:
% DecompOndelettes
DecompOndelettes:=proc(n,c)
local d,j,k:
for k from 0 to 2^(n-1)-1 do     # On calcule les composantes d(n-1,k) de f
d[n-1,k]:=(c[n,2*k]-c[n,2*k+1])*(1/sqrt(2)): #sur la base des fonctions de Haar de W_{n-1}
od:
plot(sum(d[n-1,j]*phi(n-1,j,x),j=0..2^(n-1)-1),x=0..1,style=line,thickness=[2],title="Visualisation des composantes sur la base des ondelettes",titlefont=[HELVETICA,BOLD,10]);
end:
%Compression
Compression:=proc(n,tol,c,d)
local coeffNuls,coeffNonNuls,j,k:
coeffNuls:=0: coeffNonNuls:=0:
DecompOndelettes(n,c,d):
# on calcule toutes les composantes d[j,k]
for j from n by -1 to 1 do
for k from 0 to 2^(j-1)-1 do
d[j-1,k]:=(c[j,2*k]-c[j,2*k+1])*(1/sqrt(2)):
c[j-1,k]:=(c[j,2*k]+c[j,2*k+1])*(1/sqrt(2)):
od:
od:
# on met à 0 les coefficients négligeables 
for j from 0 to n-1 do
for k from 0 to 2^j-1 do
if (abs(evalf(d[j,k]))< tol) then
d[j,k]:=0
coeffNuls:=coeffNuls+1:
else
coeffNonNuls:=coeffNonNuls+1:
fi:
od:
od:
print(coeffNuls);
print(coeffNonNuls);
end:
%Reconstruction
Recomposition:=proc(n,c,d)
global i,j,k,tab,graphe:
for j from 1 to n-1 do
for k from 0 to 2^j-1 do
c[j,2*k]:=(c[j-1,k]+d[j-1,k])*(1/sqrt(2)):
c[j,2*k+1]:=(c[j-1,k]-d[j-1,k])*(1/sqrt(2)):
od:
od:
plot([sum(c[n,1]*phi(n,i,x),i=0..2^n-1),
color=[blue,red],style=[line,line],legend=["Signal f de départ","Recomposition de f"],thickness=[2,1],title="Comparaison de la recomposition finale et du signal de départ", titlefont=[HELVETICA,BOLD,10]);
end: