Beispiel #1
0
 def ordInvFHWTForNumItersGivenNumFwdIters(signal, num_fwd_iters, num_inv_iters):
     print("num_fwd_iters = %d" % num_fwd_iters)
     print("num_inv_iters = %d" % num_inv_iters)
     sig_len = len(signal)
     if sig_len < 2 or not NumUtils.isPowOf2(sig_len):
         raise Exception('sig_len < 2 or not isPowOf2')
     num_avail_iters = NumUtils.intLog2(sig_len)
     if num_inv_iters > num_fwd_iters:
         raise Exception('ordInvFHWTForNumItersGivenNumFwdIters: num_inv_iters > num_fwd_iters')
     a0, a1 = 0, 0
     restored_vals = None
     gap = int(math.pow(2, num_avail_iters - num_fwd_iters))
     print "num_avail_iters", str(num_avail_iters)
     print "num_fwd_iters", str(num_fwd_iters)
     print "gap", str(gap)
     j = 0
     for scale in xrange(1, num_inv_iters + 1):
         restored_vals = []
         restored_vals = [0 for i in xrange(2 * gap)]
         for i in xrange(gap):
             a0 = signal[i] + signal[gap + i]
             a1 = signal[i] - signal[gap + i]
             restored_vals[2 * i] = a0
             restored_vals[2 * i + 1] = a1
         for i in xrange(2 * gap):
             signal[i] = restored_vals[i]
         gap *= 2
Beispiel #2
0
 def ordFHWTForNumIters(signal, num_iters):
     sig_len = len(signal)
     if not NumUtils.isPowOf2(sig_len):
         return
     num_sweeps = NumUtils.intLog2(sig_len)
     if num_iters > num_sweeps:
         raise Exception('ordFHWTForNumIters: num_iters > num_sweeps')
     acoeff = 0
     ccoeff = 0
     if num_sweeps == 1:
         acoeff = (signal[0] + signal[1]) / 2.0
         ccoeff = (signal[0] - signal[1]) / 2.0
         signal[0] = acoeff
         signal[1] = ccoeff
         return
     acoeffs = []
     ccoeffs = []
     for sweep_num in xrange(1, num_iters + 1):
         size = int(math.pow(2, num_sweeps - sweep_num))
         acoeffs = [0.0 for i in xrange(size)]
         ccoeffs = [0.0 for i in xrange(size)]
         ai = 0
         ci = 0
         end = int(math.pow(2.0, num_sweeps - sweep_num + 1)) - 1
         for i in xrange(0, end + 1, 2):
             acoeffs[ai] = (signal[i] + signal[i + 1]) / 2.0
             ccoeffs[ci] = (signal[i] - signal[i + 1]) / 2.0
             ai += 1
             ci += 1
         for i in xrange(size):
             signal[i] = acoeffs[i]
             signal[i + size] = ccoeffs[i]
Beispiel #3
0
    def ordFHWT(signal):
        sig_len = len(signal)
        if not NumUtils.isPowOf2(sig_len):
            raise Exception('sig_len is not PowOf2')
        num_sweeps = NumUtils.intLog2(sig_len)
        if num_sweeps == 1:
            acoeff = (signal[0] + signal[1]) / 2.0
            ccoeff = (signal[0] - signal[1]) / 2.0
            signal[0] = acoeff
            signal[1] = ccoeff
            return
        acoeffs = [] ## step coeffs
        ccoeffs = [] ## wavelet coeffs
        for sweep_num in xrange(1, num_sweeps):
            size = int(math.pow(2, num_sweeps - sweep_num))
            acoeffs = [0.0 for i in xrange(size)]
            ccoeffs = [0.0 for i in xrange(size)]
            ai = 0
            ci = 0
            end = int(math.pow(2, num_sweeps - sweep_num + 1)) - 1
            for i in xrange(0, end + 1, 2):
                acoeffs[ai] = (signal[i] + signal[i + 1]) / 2.0
                ccoeffs[ci] = (signal[i] - signal[i + 1]) / 2.0
                ai += 1
                ci += 1
            for i in xrange(0, size):
                signal[i] = acoeffs[i]
                signal[i + size] = ccoeffs[i]

        acoeff = (signal[0] + signal[1]) / 2.0
        ccoeff = (signal[0] - signal[1]) / 2.0
        signal[0] = acoeff
        signal[1] = ccoeff
Beispiel #4
0
 def ordFHWTForNumIters(signal, num_iters):
     sig_len = len(signal)
     if not NumUtils.isPowOf2(sig_len):
         return
     num_sweeps = NumUtils.intLog2(sig_len)
     if num_iters > num_sweeps:
         raise Exception('ordFHWTForNumIters: num_iters > num_sweeps')
     acoeff = 0
     ccoeff = 0
     if num_sweeps == 1:
         acoeff = (signal[0] + signal[1])/2.0
         ccoeff = (signal[0] - signal[1])/2.0
         signal[0] = acoeff
         signal[1] = ccoeff
         return
     acoeffs = []
     ccoeffs = []
     for sweep_num in xrange(1, num_iters+1):
         size = int(math.pow(2, num_sweeps - sweep_num))
         acoeffs = [0.0 for i in xrange(size)]
         ccoeffs = [0.0 for i in xrange(size)]
         ai = 0
         ci = 0
         end = int(math.pow(2.0, num_sweeps - sweep_num + 1)) - 1
         for i in xrange(0, end+1, 2):
             acoeffs[ai] = (signal[i] + signal[i+1])/2.0
             ccoeffs[ci] = (signal[i] - signal[i+1])/2.0
             ai += 1
             ci += 1
         for i in xrange(size):
             signal[i] = acoeffs[i]
             signal[i + size] = ccoeffs[i]
Beispiel #5
0
 def ordInvFHWTForNumItersGivenNumFwdIters(signal, num_fwd_iters, num_inv_iters):
     print("num_fwd_iters = %d" % num_fwd_iters)
     print("num_inv_iters = %d" % num_inv_iters)
     sig_len = len(signal)
     if sig_len < 2 or not NumUtils.isPowOf2(sig_len):
         raise Exception('sig_len < 2 or not isPowOf2')
     num_avail_iters = NumUtils.intLog2(sig_len)
     if num_inv_iters > num_fwd_iters:
         raise Exception('ordInvFHWTForNumItersGivenNumFwdIters: num_inv_iters > num_fwd_iters')
     a0, a1 = 0, 0
     restored_vals = None
     gap = int(math.pow(2, num_avail_iters - num_fwd_iters))
     print "num_avail_iters", str(num_avail_iters)
     print "num_fwd_iters", str(num_fwd_iters)
     print "gap", str(gap)
     j = 0
     for scale in xrange(1, num_inv_iters+1):
         restored_vals = []
         restored_vals = [0 for i in xrange(2*gap)]
         for i in xrange(gap):
             a0 = signal[i] + signal[gap+i]
             a1 = signal[i] - signal[gap+i]
             restored_vals[2*i] = a0
             restored_vals[2*i+1] = a1
         for i in xrange(2*gap):
             signal[i] = restored_vals[i]
         gap *= 2
Beispiel #6
0
    def ordFHWT(signal):
        sig_len = len(signal)
        if not NumUtils.isPowOf2(sig_len):
            raise Exception('sig_len is not PowOf2')
        num_sweeps = NumUtils.intLog2(sig_len)
        if num_sweeps == 1:
            acoeff = (signal[0] + signal[1]) / 2.0
            ccoeff = (signal[0] - signal[1]) / 2.0
            signal[0] = acoeff
            signal[1] = ccoeff
            return
        acoeffs = []
        ccoeffs = []
        for sweep_num in xrange(1, num_sweeps):
            size = int(math.pow(2, num_sweeps - sweep_num))
            ## print("size = %d" % size)
            acoeffs = [0.0 for i in xrange(size)]
            ccoeffs = [0.0 for i in xrange(size)]
            ai = 0
            ci = 0
            end = int(math.pow(2, num_sweeps - sweep_num + 1)) - 1
            for i in xrange(0, end + 1, 2):
                acoeffs[ai] = (signal[i] + signal[i + 1]) / 2.0
                ccoeffs[ci] = (signal[i] - signal[i + 1]) / 2.0
                ai += 1
                ci += 1
            for i in xrange(0, size):
                signal[i] = acoeffs[i]
                signal[i + size] = ccoeffs[i]

        acoeff = (signal[0] + signal[1]) / 2.0
        ccoeff = (signal[0] - signal[1]) / 2.0
        signal[0] = acoeff
        signal[1] = ccoeff
Beispiel #7
0
 def ordInvFHWT(signal):
     sig_len = len(signal)
     if sig_len < 2 or not NumUtils.isPowOf2(sig_len):
         raise Exception('sig_len < 2 or not isPowOf2')
     num_iters = NumUtils.intLog2(sig_len)
     a0 = 0
     a1 = 0
     restored_vals = None
     gap = 0
     for scale in xrange(1, num_iters + 1):
         gap = int(math.pow(2, scale - 1))
         restored_vals = []
         restored_vals = [0.0 for i in xrange(2 * gap)]
         for i in xrange(gap):
             a0 = signal[i] + signal[gap + i]
             a1 = signal[i] - signal[gap + i]
             restored_vals[2 * i] = a0
             restored_vals[2 * i + 1] = a1
         for i in xrange(2 * gap):
             signal[i] = restored_vals[i]
Beispiel #8
0
 def ordInvFHWT(signal):
     sig_len = len(signal)
     if sig_len < 2 or not NumUtils.isPowOf2(sig_len):
         raise Exception('sig_len < 2 or not isPowOf2')
     num_iters = NumUtils.intLog2(sig_len)
     a0 = 0
     a1 = 0
     restored_vals = None
     gap = 0
     for scale in xrange(1, num_iters+1):
         gap = int(math.pow(2, scale-1))
         restored_vals = []
         restored_vals = [0.0 for i in xrange(2*gap)]
         for i in xrange(gap):
             a0 = signal[i] + signal[gap+i]
             a1 = signal[i] - signal[gap+i]
             restored_vals[2*i] = a0
             restored_vals[2*i + 1] = a1
         for i in xrange(2*gap):
             signal[i] = restored_vals[i]
Beispiel #9
0
 def ordInvFHWTForNumIters(signal, num_iters):
     sig_len = len(signal)
     if sig_len < 2 or not NumUtils.isPowOf2(sig_len):
         return
     num_avail_iters = NumUtils.intLog2(sig_len)
     if num_iters > num_avail_iters:
         return
     a0, a1 = 0, 0
     restored_vals = None
     gap = 1
     j = 0
     for scale in xrange(1, num_iters + 1):
         restored_vals = []
         restored_vals = [0 for i in xrange(2 * gap)]
         for i in xrange(gap):
             a0 = signal[i] + signal[gap + i]
             a1 = signal[i] - signal[gap + i]
             restored_vals[2 * i] = a0
             restored_vals[2 * i + 1] = a1
         for i in xrange(2 * gap):
             signal[i] = restored_vals[i]
         gap *= 2
Beispiel #10
0
 def ordInvFHWTForNumIters(signal, num_iters):
     sig_len = len(signal)
     if sig_len < 2 or not NumUtils.isPowOf2(sig_len):
         return
     num_avail_iters = NumUtils.intLog2(sig_len)
     if num_iters > num_avail_iters:
         return
     a0, a1 = 0, 0
     restored_vals = None
     gap = 1
     j = 0
     for scale in xrange(1, num_iters+1):
         restored_vals = []
         restored_vals = [0 for i in xrange(2*gap)]
         for i in xrange(gap):
             a0 = signal[i] + signal[gap+i]
             a1 = signal[i] - signal[gap+i]
             restored_vals[2*i] = a0
             restored_vals[2*i+1] = a1
         for i in xrange(2*gap):
             signal[i] = restored_vals[i]
         gap *= 2