Cambiato il metodo Show() di SplittingExample in modo che mostri tutte

Leonardo Robol [2010-03-03 09:29]
Cambiato il metodo Show() di SplittingExample in modo che mostri tutte
le componenti delle wavelet.
Filename
Filtering/Filtering.py
Filtering/Splitting.py
diff --git a/Filtering/Filtering.py b/Filtering/Filtering.py
index 33d9c00..8faefac 100644
--- a/Filtering/Filtering.py
+++ b/Filtering/Filtering.py
@@ -60,7 +60,7 @@ class FilterBank():
         self.highPassInverseFilter = None
         self.lowPassInverseFilter = None

-        self.depth = 1
+        self.depth = 2

     def SetFilterMatrix(self, filter_matrix):
         """
diff --git a/Filtering/Splitting.py b/Filtering/Splitting.py
old mode 100644
new mode 100755
index 3aef69b..1ea6063
--- a/Filtering/Splitting.py
+++ b/Filtering/Splitting.py
@@ -1,9 +1,15 @@
-#
+#!/usr/bin/env python
 # -*- coding: utf-8 -*-
 #

-import Filtering, pylab
+import Filtering, pylab, sys
 from numpy import array, sqrt, memmap, roll
+from numpy.linalg import norm
+
+def Output (string):
+    """Output with colors :)"""
+    print " \033[1m=>\033[0m\033[32;1m %s \033[0m" % string
+

 class SplittingExample():

@@ -19,19 +25,22 @@ class SplittingExample():
         # f0 = array([1, 1])
         # f1 = array([1, -1])

-        filterBank = Filtering.FilterBank ()
-        filterBank.SetFilterMatrix ([h0,h1,f0,f1])
-        filterBank.SetDepth (3)
-
-        # filterBank = Filtering.StrangFilterBank
-        # filterBank.SetDepth(2)
-
         filterBank = Filtering.HaarFilterBank
         filterBank.SetDepth(8)

         samples = self.LoadSamples ("sunny.pcm")
         wavelets = filterBank.Split (samples)
+
+        # Scrivo le wavelet su file per potermele
+        # ascoltare.
+
+	if len(sys.argv) > 1 and sys.argv[1] == "show":
+            self.Show (wavelets)
+
+
+
         rebuilt = filterBank.Rebuild (wavelets)
+        Output ("||rebuilt - samples|| = %f" % norm(rebuilt - samples[0:len(rebuilt)]))
         self.WriteSamples(rebuilt, "rebuilt.pcm")


@@ -39,13 +48,14 @@ class SplittingExample():
         """
         Load the samples from an audio file
         """
-        print " => Loading samples from %s" % filename
+        Output("Loading samples from %s" % filename)
         samples = memmap (filename,
                           dtype="<h",
                           mode="r")
         return samples

     def WriteSamples(self, samples, filename):
+        Output("Writing samples to %s" % filename)
         data = memmap (filename,
                        dtype="<h",
                        mode="w+",
@@ -53,13 +63,17 @@ class SplittingExample():
         data[:] = samples[:]
         data.flush ()

-    def Show(self):
+    def Show(self, wavelets):
         """
         Shows the result of filtering
         """
-        pylab.plot (self.low)
-        pylab.plot (self.high)
-
+        scale = 1
+        offset = -90000
+        for samples in wavelets[0:-1]:
+            pylab.plot (range(0, scale * len(samples), scale), samples + offset)
+            offset += 30000
+            scale = 2*scale
+        pylab.plot (range(0, int(0.5*scale*len(wavelets[-1])), int(0.5 * scale)), wavelets[-1] + offset)
         pylab.show ()

ViewGit