def wavedec(data, wavelet, mode='sym', level=None): """ Multilevel 1D Discrete Wavelet Transform of data. Returns coefficients list - [cAn, cDn, cDn-1, ..., cD2, cD1] data - input data wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES level - decomposition level. If level is None then it will be calculated using `dwt_max_level` function. """ if not isinstance(wavelet, Wavelet): wavelet = Wavelet(wavelet) if level is None: level = dwt_max_level(len(data), wavelet.dec_len) elif level < 0: raise ValueError("Level value of %d is too low . Minimum level is 0." % level) coeffs_list = [] a = data for i in xrange(level): a, d = dwt(a, wavelet, mode) coeffs_list.append(d) coeffs_list.append(a) coeffs_list.reverse() return coeffs_list
def __init__(self, data, wavelet, mode='sp1', maxlevel=None): super(WaveletPacket2D, self).__init__(None, data, "") if not isinstance(wavelet, Wavelet): wavelet = Wavelet(wavelet) self.wavelet = wavelet self.mode = mode if data is not None: data = numerix.as_float_array(data) assert len(data.shape) == 2 self.data_size = data.shape if maxlevel is None: maxlevel = dwt_max_level(min(self.data_size), self.wavelet) else: self.data_size = None self._maxlevel = maxlevel
def __init__(self, data, wavelet, mode='sp1', maxlevel=None): Node.__init__(self, None, data, "") if not isinstance(wavelet, Wavelet): wavelet = Wavelet(wavelet) self.wavelet = wavelet self.mode = mode if data is not None: self.data_size = len(data) if maxlevel is None: maxlevel = dwt_max_level(self.data_size, self.wavelet.dec_len) else: self.data_size = None self.maxlevel = maxlevel self.level = 0 self.frequency = (0., 1.)
def wavedec2(data, wavelet, mode='sym', level=None): """ Multilevel 2D Discrete Wavelet Transform. data - 2D input data wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES level - decomposition level. If level is None then it will be calculated using `dwt_max_level` function . Returns coefficients list - [cAn, (cHn, cVn, cDn), ... (cH1, cV1, cD1)] """ data = as_float_array(data) if len(data.shape) != 2: raise ValueError("Expected 2D input data.") if not isinstance(wavelet, Wavelet): wavelet = Wavelet(wavelet) if level is None: size = min(data.shape) level = dwt_max_level(size, wavelet.dec_len) elif level < 0: raise ValueError("Level value of %d is too low . Minimum level is 0." % level) coeffs_list = [] a = data for i in xrange(level): a, ds = dwt2(a, wavelet, mode) coeffs_list.append(ds) coeffs_list.append(a) coeffs_list.reverse() return coeffs_list
def wavedec2(data, wavelet, mode='sym', level=None): """ Multilevel 2D Discrete Wavelet Transform. data - 2D input data wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES level - decomposition level. If level is None then it will be calculated using `dwt_max_level` function . Returns coefficients list - [cAn, (cHn, cVn, cDn), ... (cH1, cV1, cD1)] """ data = as_float_array(data) if len(data.shape) != 2: raise ValueError("Expected 2D input data.") if not isinstance(wavelet, Wavelet): wavelet = Wavelet(wavelet) if level is None: size = min(data.shape) level = dwt_max_level(size, wavelet.dec_len) elif level < 0: raise ValueError( "Level value of %d is too low . Minimum level is 0." % level) coeffs_list = [] a = data for i in xrange(level): a, ds = dwt2(a, wavelet, mode) coeffs_list.append(ds) coeffs_list.append(a) coeffs_list.reverse() return coeffs_list
def _evaluate_maxlevel(self, evaluate_from='parent'): """ Try to find the value of maximum decomposition level if it is not specified explicitly. """ assert evaluate_from in ('parent', 'subnodes') if self._maxlevel is not None: return self._maxlevel elif self.data is not None: return self.level + dwt_max_level(min(self.data.shape), self.wavelet) if evaluate_from == 'parent': if self.parent is not None: return self.parent._evaluate_maxlevel(evaluate_from) elif evaluate_from == 'subnodes': for node_name in self.PARTS: node = getattr(self, node_name, None) if node is not None: level = node._evaluate_maxlevel(evaluate_from) if level is not None: return level return None
def _evaluate_maxlevel(self, evaluate_from='parent'): """ Try to find the value of maximum decomposition level if it is not specified explicitly. """ assert evaluate_from in ('parent', 'subnodes') if self._maxlevel is not None: return self._maxlevel elif self.data is not None: return self.level + dwt_max_level( min(self.data.shape), self.wavelet) if evaluate_from == 'parent': if self.parent is not None: return self.parent._evaluate_maxlevel(evaluate_from) elif evaluate_from == 'subnodes': for node_name in self.PARTS: node = getattr(self, node_name, None) if node is not None: level = node._evaluate_maxlevel(evaluate_from) if level is not None: return level return None