entropy.katz_fd
-
entropy.
katz_fd
(x, axis=- 1)[source] Katz Fractal Dimension.
- Parameters
- xlist or np.array
1D or N-D data.
- axisint
The axis along which the FD is calculated. Default is -1 (last).
- Returns
- kfdfloat
Katz fractal dimension.
Notes
Katz’s method calculates the fractal dimension of a sample as follows: the sum and average of the Euclidean distances between the successive points of the sample (\(L\) and \(a\) , resp.) are calculated as well as the maximum distance between the first point and any other point of the sample (\(d\)). The fractal dimension of the sample (\(D\)) then becomes:
\[D = \frac{\log_{10}(L/a)}{\log_{10}(d/a)} = \frac{\log_{10}(n)}{\log_{10}(d/L)+\log_{10}(n)}\]where \(n\) is \(L\) divided by \(a\).
Original code from the mne-features package by Jean-Baptiste Schiratti and Alexandre Gramfort.
References
Examples
>>> import numpy as np >>> import entropy as ent >>> import stochastic.processes.noise as sn >>> rng = np.random.default_rng(seed=42) >>> x = sn.FractionalGaussianNoise(hurst=0.5, rng=rng).sample(10000) >>> print(f"{ent.katz_fd(x):.4f}") 6.4713
Fractional Gaussian noise with H = 0.9
>>> rng = np.random.default_rng(seed=42) >>> x = sn.FractionalGaussianNoise(hurst=0.9, rng=rng).sample(10000) >>> print(f"{ent.katz_fd(x):.4f}") 4.5720
Fractional Gaussian noise with H = 0.1
>>> rng = np.random.default_rng(seed=42) >>> x = sn.FractionalGaussianNoise(hurst=0.1, rng=rng).sample(10000) >>> print(f"{ent.katz_fd(x):.4f}") 7.6540
Random
>>> rng = np.random.default_rng(seed=42) >>> print(f"{ent.katz_fd(rng.random(1000)):.4f}") 8.1531
Pure sine wave
>>> x = np.sin(2 * np.pi * 1 * np.arange(3000) / 100) >>> print(f"{ent.katz_fd(x):.4f}") 2.4871
Linearly-increasing time-series (should be 1)
>>> x = np.arange(1000) >>> print(f"{ent.katz_fd(x):.4f}") 1.0000