MCPcopy Create free account
hub / github.com/PyWavelets/pywt / dwt_max_level

Function dwt_max_level

pywt/_dwt.py:18–80  ·  view source on GitHub ↗

r""" dwt_max_level(data_len, filter_len) Compute the maximum useful level of decomposition. Parameters ---------- data_len : int Input data length. filter_len : int, str or Wavelet The wavelet filter length. Alternatively, the name of a discrete wav

(data_len, filter_len)

Source from the content-addressed store, hash-verified

16
17
18def dwt_max_level(data_len, filter_len):
19 r"""
20 dwt_max_level(data_len, filter_len)
21
22 Compute the maximum useful level of decomposition.
23
24 Parameters
25 ----------
26 data_len : int
27 Input data length.
28 filter_len : int, str or Wavelet
29 The wavelet filter length. Alternatively, the name of a discrete
30 wavelet or a Wavelet object can be specified.
31
32 Returns
33 -------
34 max_level : int
35 Maximum level.
36
37 Notes
38 -----
39 The rational for the choice of levels is the maximum level where at least
40 one coefficient in the output is uncorrupted by edge effects caused by
41 signal extension. Put another way, decomposition stops when the signal
42 becomes shorter than the FIR filter length for a given wavelet. This
43 corresponds to:
44
45 .. max_level = floor(log2(data_len/(filter_len - 1)))
46
47 .. math::
48 \mathtt{max\_level} = \left\lfloor\log_2\left(\mathtt{
49 \frac{data\_len}{filter\_len - 1}}\right)\right\rfloor
50
51 Examples
52 --------
53 >>> import pywt
54 >>> w = pywt.Wavelet('sym5')
55 >>> pywt.dwt_max_level(data_len=1000, filter_len=w.dec_len)
56 6
57 >>> pywt.dwt_max_level(1000, w)
58 6
59 >>> pywt.dwt_max_level(1000, 'sym5')
60 6
61 """
62 if isinstance(filter_len, Wavelet):
63 filter_len = filter_len.dec_len
64 elif isinstance(filter_len, str):
65 if filter_len in wavelist(kind='discrete'):
66 filter_len = Wavelet(filter_len).dec_len
67 else:
68 raise ValueError(
69 f"'{filter_len}', is not a recognized discrete wavelet. A list of "
70 "supported wavelet names can be obtained via "
71 "pywt.wavelist(kind='discrete')")
72 elif not (isinstance(filter_len, Number) and filter_len % 1 == 0):
73 raise ValueError(
74 "filter_len must be an integer, discrete Wavelet object, or the "
75 "name of a discrete wavelet.")

Callers 7

_evaluate_maxlevelMethod · 0.90
_evaluate_maxlevelMethod · 0.90
__init__Method · 0.90
__init__Method · 0.90
__init__Method · 0.90
_check_levelFunction · 0.70
dwtn_max_levelFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected