def subsampler(Ndec, bdec, adec, x, zis): x_dec = x if zis == None: for i in range(Ndec): x_dec, zf = decimate(bdec, adec, x_dec) return x_dec, None else: m = 0 zfs = [] for i in range(Ndec): x_dec, zf = decimate(bdec, adec, x_dec, zi=zis[m]) m += 1 # zf can be reused to restart the filter zfs += [zf] return x_dec, zfs
def subsampler(Ndec, bdec, adec, x, zis): x_dec = x # FIXME problems when x is smaller than filter coeff # do not run on empty arrays, otherwise bad artefacts on the output !! if x.size == 0: return x, zis if zis == None: for i in range(Ndec): x_dec, zf = decimate(bdec, adec, x_dec) return x_dec, None else: zfs = [] for i, zi in zip(range(Ndec), zis): x_dec, zf = decimate(bdec, adec, x_dec, zi=zi) # zf can be reused to restart the filter zfs += [zf] return x_dec, zfs