X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fnan-2.5.5%2FzScoreMedian.m;fp=octave_packages%2Fnan-2.5.5%2FzScoreMedian.m;h=903f77138a3d7c8e13b15d87d46bfab9cecb970c;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/nan-2.5.5/zScoreMedian.m b/octave_packages/nan-2.5.5/zScoreMedian.m new file mode 100644 index 0000000..903f771 --- /dev/null +++ b/octave_packages/nan-2.5.5/zScoreMedian.m @@ -0,0 +1,46 @@ +function Z = zScoreMedian(X, DIM) +% zScoreMedian removes the median and standardizes by the 1.483*median absolute deviation +% +% Usage: Z = zScoreMedian(X, DIM) +% Input: X : data +% DIM: dimension along which z-score should be calculated (1=columns, 2=rows) +% (optional, default=first dimension with more than 1 element +% Output: Z : z-scores + +% Copyright (C) 2003 Patrick Houweling +% Copyright (C) 2009 Alois Schloegl +% $Id: zScoreMedian.m 8075 2011-01-27 17:10:36Z schloegl $ +% This function is part of the NaN-toolbox +% http://pub.ist.ac.at/~schloegl/matlab/NaN/ + +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program 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 General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . + + +% input checks +if any(size(X)==0), + return; +end; + +% robust moment estimators: +% - mean: median +% - standard deviation: 1.483 * median absolute deviation (medAbsDev); +% the factor 1.483 is the ratio of the standard deviation of a normal random variable to its MAD. +if nargin<2, + [D, M] = medAbsDev(X); +else + [D, M] = medAbsDev(X, DIM); +end; + +% z-score: subtract M and divide by 1.483*D +Z = (X - repmat(M, size(X)./size(M))) ./ repmat(1.483*D, size(X)./size(D));