Frage

Ich habe eine 4x4-Matrix, die ich wünsche zu zersetzen, in 4 Frequenzbändern (LL, HL, LH, HH, wo L = niedrig H = hoch) unter Verwendung einer Ein-Ebene Daubechies-4-Wavelet-Transformation. Als Ergebnis der Transformation, sollte jedes Band 2x2 Koeffizienten enthalten. Wie kann ich dies in MATLAB tun? Ich weiß, dass MATLAB dbaux und dbwavf Funktionen. Allerdings bin ich nicht sicher, wie man sie benutzt, und ich auch nicht die Wavelet-Toolbox haben.

Jede Hilfe sehr geschätzt.

Danke.

War es hilfreich?

Lösung

Haben Sie das versuchen?

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;

Mit freundlicher Genehmigung http://en.wikipedia.org/wiki/Daubechies_wavelet#Implementation

Andere Tipps

ich glaube, Ivan Selesnick Wavelet-Softwarepaket alle die richtigen Knöpfe für Sie schiebt. Er deckt die trennbaren 1D-, 2D- und 3D-Fälle ... sowohl Matlab Implementierung und Anleitung! Es wird nicht die Wavelet Toolbox erfordern, aber es erfordert wahrscheinlich die Signal Processing Toolbox (nicht sicher über die Image Processing Toolbox). Es bietet auch Code für fortgeschrittenere Wavelet-Transformationen, so dass Sie auch alternative Techniken erkunden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top