plectrum

Plectrum: instrument tuner for Android
Log | Files | Refs | README | LICENSE

LiftingSchemeTest.java (3116B)


      1 package be.tarsos.dsp.wavelet.lift;
      2 
      3 
      4 class LiftingSchemeTest {
      5 
      6 	private static void print(float[] values) {
      7 		System.out.print("[");
      8 		for (double val : values) {
      9 			System.out.print(val);
     10 			System.out.print(",");
     11 		}
     12 		System.out.println("]");
     13 	}
     14 
     15 	public static void main(String[] args) {
     16 
     17 		/*
     18 		 * double vals[] = { 32.0, 10.0, 20.0, 38.0, 37.0, 28.0, 38.0, 34.0,
     19 		 * 18.0, 24.0, 18.0, 9.0, 23.0, 24.0, 28.0, 34.0 };
     20 		 */
     21 		float vals[] = { 25, 40, 8, 24, 48, 48, 40, 16 };
     22 		/*
     23 		 * double vals[] = { 77.6875, 78.1875, 82.0625, 85.5625, 86.7500,
     24 		 * 82.4375, 82.2500, 82.7500, 81.2500, 79.5625, 80.2813, 79.8750,
     25 		 * 77.7500, 74.7500, 78.5000, 79.1875, 78.8125, 80.3125, 80.1250,
     26 		 * 79.3125, 83.7500, 89.8125, 87.7500, 91.1250, 94.4375, 92.7500,
     27 		 * 98.0000, 97.1875, 99.4375, 101.7500, 108.5000, 109.0000, 105.2500,
     28 		 * 105.5000, 110.0000, 107.0000, 107.2500, 103.3125, 102.8750, 102.4375,
     29 		 * 102.0000, 101.3125, 97.4375, 100.5000, 107.7500, 110.2500, 114.3125,
     30 		 * 111.2500, 114.8125, 112.6875, 109.4375, 108.0625, 104.5625, 103.2500,
     31 		 * 110.5625, 110.7500, 116.3125, 123.6250, 120.9375, 121.6250, 127.6875,
     32 		 * 126.0625, 126.3750, 124.3750 };
     33 		 */
     34 
     35 		HaarWavelet hr = new HaarWavelet();
     36 		LineWavelet ln = new LineWavelet();
     37 		Daubechies4Wavelet d = new Daubechies4Wavelet();
     38 
     39 		HaarWithPolynomialInterpolationWavelet hrpy = new HaarWithPolynomialInterpolationWavelet();
     40 		PolynomialWavelets py = new PolynomialWavelets();
     41 
     42 		System.out.println("Data:");
     43 		print(vals);
     44 		System.out.println();
     45 
     46 		System.out.println("HaarWavelet:");
     47 		hr.forwardTrans(vals);
     48 		print(vals);
     49 		System.out.println();
     50 		hr.inverseTrans(vals);
     51 		print(vals);
     52 		System.out.println();
     53 
     54 		System.out.println("Daubechies4Wavelet:");
     55 		d.forwardTrans(vals);
     56 		print(vals);
     57 		System.out.println();
     58 		d.inverseTrans(vals);
     59 		print(vals);
     60 		System.out.println();
     61 
     62 		System.out.println("Line:");
     63 		ln.forwardTrans(vals);
     64 		print(vals);
     65 		System.out.println();
     66 		ln.inverseTrans(vals);
     67 		print(vals);
     68 		System.out.println();
     69 
     70 		System.out
     71 				.println("HaarWavelet, extended with polynomial interpolation:");
     72 		hrpy.forwardTrans(vals);
     73 		print(vals);
     74 		System.out.println();
     75 		hrpy.inverseTrans(vals);
     76 		print(vals);
     77 		System.out.println();
     78 
     79 		System.out.println("Poly:");
     80 		py.forwardTrans(vals);
     81 		print(vals);
     82 		System.out.println();
     83 		py.inverseTrans(vals);
     84 		print(vals);
     85 		System.out.println();
     86 
     87 		float[] t = { 56, 40, 8, 24, 48, 48, 40, 16 };
     88 		hr.forwardTransOne(t);
     89 
     90 		float[] signal = { 56, 40, 8, 24, 48, 48, 40, 16 };
     91 		dwtHaar(signal);
     92 	}
     93 
     94 	private static void dwtHaar(float[] signal) {
     95 		float[] s = new float[signal.length];
     96 		float[] d = new float[signal.length];
     97 		for (int i = 0; i < signal.length / 2; i++) {
     98 			s[i] = (signal[2 * i] + signal[2 * i + 1]) / 2.0f;
     99 			d[i] = signal[2 * i] - s[i];
    100 		}
    101 		print(s);
    102 		print(d);
    103 	}
    104 
    105 	/*
    106 	 * private static void decompose(float[] signal) { int length =
    107 	 * signal.length; int steps = (int) Math.round(Math.log(length) /
    108 	 * Math.log(2)); }
    109 	 */
    110 
    111 }