--- a
+++ b/featurebased-approach/subfunctions/lib/Sample Entropy/SampEn.m
@@ -0,0 +1,82 @@
+function saen = SampEn( dim, r, data, tau )
+% SAMPEN Sample Entropy
+%   calculates the sample entropy of a given time series data
+
+%   SampEn is conceptually similar to approximate entropy (ApEn), but has
+%   following differences:
+%       1) SampEn does not count self-matching. The possible trouble of
+%       having log(0) is avoided by taking logarithm at the latest step.
+%       2) SampEn does not depend on the datasize as much as ApEn does. The
+%       comparison is shown in the graph that is uploaded.
+
+%   dim     : embedded dimension
+%   r       : tolerance (typically 0.2 * std)
+%   data    : time-series data
+%   tau     : delay time for downsampling (user can omit this, in which case
+%             the default value is 1)
+%
+%---------------------------------------------------------------------
+% coded by Kijoon Lee,  kjlee@ntu.edu.sg
+% Mar 21, 2012
+%---------------------------------------------------------------------
+%
+% Copyright (c) 2012, Kijoon Lee
+% All rights reserved.
+%
+% Redistribution and use in source and binary forms, with or without
+% modification, are permitted provided that the following conditions are
+% met:
+%
+%    * Redistributions of source code must retain the above copyright
+%      notice, this list of conditions and the following disclaimer.
+%    * Redistributions in binary form must reproduce the above copyright
+%      notice, this list of conditions and the following disclaimer in
+%      the documentation and/or other materials provided with the distribution
+%
+% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+% POSSIBILITY OF SUCH DAMAGE.
+
+if nargin < 4, tau = 1; end
+if tau > 1, data = downsample(data, tau); end
+
+N = length(data);
+correl = zeros(1,2);
+dataMat = zeros(dim+1,N-dim);
+for i = 1:dim+1
+    dataMat(i,:) = data(i:N-dim+i-1);
+end
+
+for m = dim:dim+1
+    count = zeros(1,N-dim);
+    tempMat = dataMat(1:m,:);
+    
+    for i = 1:N-m
+        % calculate Chebyshev distance, excluding self-matching case
+        if m==1; 
+        dist = abs(bsxfun(@minus,tempMat(:,i+1:N- dim),tempMat(:,i))); 
+        else 
+        dist = max(abs(bsxfun(@minus,tempMat(:,i+1:N-dim),tempMat(:,i)))); 
+        end
+        
+        % calculate Heaviside function of the distance
+        % User can change it to any other function
+        % for modified sample entropy (mSampEn) calculation
+        D = (dist < r);
+        
+        count(i) = sum(D)/(N-dim);
+    end
+    
+    correl(m-dim+1) = sum(count)/(N-dim);
+end
+
+saen = log(correl(1)/correl(2));
+end
\ No newline at end of file