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 }