forrestbao / pyeeg

Python + EEG/MEG = PyEEG
GNU General Public License v3.0
241 stars 85 forks source link

enhance hfd #23

Closed MohMehrnia closed 5 years ago

MohMehrnia commented 6 years ago
def hfd(X, Kmax):
    """ Compute Hjorth Fractal Dimension of a time series X, kmax
     is an HFD parameter
    """
    **try:**
        L = []
        x = []
        N = len(X)
        for k in range(1, Kmax):
            Lk = []
            for m in range(0, k):
                Lmk = 0
                for i in range(1, int(numpy.floor((N - m) / k))):
                    Lmk += abs(X[m + i * k] - X[m + i * k - k])
                Lmk = Lmk * (N - 1) / numpy.floor((N - m) / float(k)) / k
                Lk.append(Lmk)
            **if numpy.mean(Lk) != 0:
                L.append(numpy.log(numpy.mean(Lk)))
                x.append([numpy.log(float(1) / k), 1])
                (p, r1, r2, s) = numpy.linalg.lstsq(x, L)
                return p[0]
            else:
                return 0**
    **except Exception as e:
        return 0**
forrestbao commented 5 years ago

@MohMehrnia can you elaborate under what condition the mean of Lk can be 0? When the signal is (numerically) flat (e.g., X[m + i k] ≈ X[m + (i-1) k]) ?

MohMehrnia commented 5 years ago

Hi, @forrestbao when signal frame contains many silence sample