Ich interessiere mich für Implementierungen der Haar-Transformation und ihrer Umkehrung, so dass sie bei ihrer Komposition immer zur Identitätsoperation führen. Meine Eingaben sind diskrete Ordnungszahlen innerhalb eines bestimmten Bereichs - und ich brauche die Ausgabe der Haar-Transformation, um ähnlich diskrete Ordnungszahlen (oder Festkommazahlen) zu sein.
Ich habe auf der Basis gearbeitet, dass, wenn mein Eingangssignal gleichmäßig verteilte Abtastwerte im Bereich und mein transformiertes Signal besteht, mein ursprüngliches Signal im Prinzip perfekt von der wiedergegeben werden sollte inverses Haar.
Ich habe mich mit dieser (Matlab) -Implementierung unter Verwendung von GNU Octave beschäftigt:
http://people.sc.fsu.edu/~jburkardt/m_src/haar/haar.html
Was Werte mit doppelter Genauigkeit verwendet ... zwingt mich, round () zu verwenden, um eine diskrete Darstellung der transformierten Daten zu erstellen, damit die transformierte Darstellung in denselben Zustandsraum wie das Original passt. Es war nicht überraschend, dass ich round () erneut für die Ausgabe der inversen Transformation verwenden musste.
Es wird wahrscheinlich nicht überraschen, dass round (haar_2d_inverse (round (haar_2d (signal)))) für die meisten Signalwerte nicht ganz die Identitätsfunktion ist ... Anekdotisch gibt es typischerweise einige Out-by-One-Fehler in der rekonstruiertes Signal - das ungefähr symmetrisch erscheint (+1 oder -1 bei einer kleinen Anzahl der rekonstruierten Abtastwerte) und dies scheint fast unabhängig von der Wahl von n zu sein.
Ich würde gerne wissen, ob es "bessere" Implementierungen von haar_2d und haar_2d_inverse gibt, die für ordinale Stichproben funktionieren. Sind die Anomalien die Folge der Haar-Implementierung selbst oder die Art und Weise, wie ich round () in der Zwischenphase angewendet habe? Wenn letzteres der Fall ist, kann ich dies durch Skalieren vor dem Runden korrigieren?