Domanda

Ho una matrice 4x4 che desidero decomporsi in 4 bande di frequenza (LL, HL, LH, HH dove L = bassa, H = alto) utilizzando un unico livello Daubechies-4 trasformata wavelet. Come risultato della trasformazione, ciascuna banda dovrebbe contenere 2x2 coefficienti. Come posso fare questo in MATLAB? So che MATLAB ha funzioni dbaux e dbwavf. Tuttavia, non sono sicuro di come usarli e anche io non avere la cassetta degli attrezzi wavelet.

Ogni aiuto è molto apprezzato.

Grazie.

È stato utile?

Soluzione

Hai provato questo?

N = length(S);
S = transpose(S);
s1 = S(1:2:N-1) + sqrt(3)*S(2:2:N);
d1 = S(2:2:N) - sqrt(3)/4*s1 - (sqrt(3)-2)/4*[s1(N/2) s1(1:N/2-1)];
s2 = s1 - [d1(2:N/2) d1(1)];
s = (sqrt(3)-1)/sqrt(2) * s2;
d = (sqrt(3)+1)/sqrt(2) * d1;

http://en.wikipedia.org/wiki/Daubechies_wavelet#Implementation

Altri suggerimenti

wavelet pacchetto software di Ivan Selesnick spinge tutti i tasti giusti per voi. Esso copre l'separabili 1D, 2D e 3D casi ... sia l'attuazione MATLAB e tutorial! Non richiede la Wavelet Toolbox, ma probabilmente richiede l'Signal Processing Toolbox (non sono sicuro circa l'Image Processing Toolbox). Esso prevede anche il codice per trasformate wavelet più avanzati, così si può anche esplorare le tecniche alternative.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top