-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhjorth.m
97 lines (87 loc) · 3.15 KB
/
hjorth.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
function [ACTIVITY, MOBILITY, COMPLEXITY,m0,m1,m2] = hjorth(S,UC,A)
% HJORTH calculates ACTIVITY, MOBILITY, COMPLEXITY
%
% [ACTIVITY, MOBILITY, COMPLEXITY] = hjorth(...)
%
% [...] = hjorth(S,0)
% calculates stationary Hjorth parameter
% [...] = hjorth(S,UC) with 0<UC<1,
% calculates time-varying Hjorth parameter using
% exponential window
% [...] = hjorth(S,N) with N>1,
% calculates time-varying Hjorth parameter using
% rectangulare window of length N
% [...] = hjorth(S,B,A) with B>=1 oder length(B)>1,
% calulates time-varying Hjorth parameters using
% transfer function B(z)/A(z) for windowing
%
% S data (each channel is a column)
% UC update coefficient
% B,A filter coefficients (window function)
%
% see also: TDP, BARLOW, WACKERMANN
%
% REFERENCE(S):
% [1] B. Hjorth,
% EEG analysis based on time domain properties
% Electroencephalography and Clinical Neurophysiology, vol. 29, no. 3, pp. 306–310, September 1970.
% [2] B. Hjorth,
% Time Domain Descriptors and their Relation to particulare Model for Generation of EEG activity.
% in G. Dolce, H. Kunkel: CEAN Computerized EEG Analysis, Gustav Fischer 1975, S.3-8.
% $Id$
% Copyright (C) 2004,2008,2009 by Alois Schloegl <[email protected]>
% This is part of the BIOSIG-toolbox http://biosig.sf.net/
% This library is free software; you can redistribute it and/or
% modify it under the terms of the GNU Library General Public
% License as published by the Free Software Foundation; either
% Version 2 of the License, or (at your option) any later version.
%
% This library is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
% Library General Public License for more details.
%
% You should have received a copy of the GNU Library General Public
% License along with this library; if not, write to the
% Free Software Foundation, Inc., 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.
[N,K] = size(S); % number of electrodes K, number of samples N
%m0 = mean(sumsq(S,2));
d0 = S;
%m1 = mean(sumsq(diff(S,[],1),2));
d1 = diff([zeros(1,K);S ],[],1);
d2 = diff([zeros(1,K);d1],[],1);
FLAG_ReplaceNaN = 0;
if nargin<2,
UC = 0;
end;
if nargin<3;
if UC==0,
elseif UC>=1,
B = ones(1,UC);
A = UC;
elseif UC<1,
FLAG_ReplaceNaN = 1;
B = UC;
A = [1, UC-1];
end;
else
B = UC;
end;
if ~UC,
m0 = mean(d0.^2);
m1 = mean(d1.^2);
m2 = mean(d2.^2);
else
if FLAG_ReplaceNaN;
d0(isnan(d0)) = 0;
d1(isnan(d1)) = 0;
d2(isnan(d2)) = 0;
end;
m0 = filter(B,A,d0.^2)./filter(B,A,double(~isnan(d0)));
m1 = filter(B,A,d1.^2)./filter(B,A,double(~isnan(d1)));
m2 = filter(B,A,d2.^2)./filter(B,A,double(~isnan(d2)));
end;
ACTIVITY = m0;
MOBILITY = sqrt(m1./m0);
COMPLEXITY = sqrt(m2./m1)./MOBILITY;