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.
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 ()