X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=octave_packages%2Fnan-2.5.5%2Fsem.m;fp=octave_packages%2Fnan-2.5.5%2Fsem.m;h=479f5e7f354aaeaa51505b052f64e07361ed4281;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hp=0000000000000000000000000000000000000000;hpb=1705066eceaaea976f010f669ce8e972f3734b05;p=CreaPhase.git diff --git a/octave_packages/nan-2.5.5/sem.m b/octave_packages/nan-2.5.5/sem.m new file mode 100644 index 0000000..479f5e7 --- /dev/null +++ b/octave_packages/nan-2.5.5/sem.m @@ -0,0 +1,58 @@ +function [SE,M]=sem(x,DIM, W) +% SEM calculates the standard error of the mean +% +% [SE,M] = SEM(x [, DIM [,W]]) +% calculates the standard error (SE) in dimension DIM +% the default DIM is the first non-single dimension +% M returns the mean. +% Can deal with complex data, too. +% +% DIM dimension +% 1: SEM of columns +% 2: SEM of rows +% N: SEM of N-th dimension +% default or []: first DIMENSION, with more than 1 element +% W weights to compute weighted mean and s.d. (default: []) +% if W=[], all weights are 1. +% number of elements in W must match size(x,DIM) +% +% features: +% - can deal with NaN's (missing values) +% - weighting of data +% - dimension argument +% - compatible to Matlab and Octave +% +% see also: SUMSKIPNAN, MEAN, VAR, STD + +% 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 . + +% Copyright (C) 2000-2003,2008,2009 by Alois Schloegl +% $Id: sem.m 8223 2011-04-20 09:16:06Z schloegl $ +% This function is part of the NaN-toolbox +% http://pub.ist.ac.at/~schloegl/matlab/NaN/ + + +if nargin>2, + [S,N,SSQ] = sumskipnan(x,DIM,W); +elseif nargin>1, + [S,N,SSQ] = sumskipnan(x,DIM); +else + [S,N,SSQ] = sumskipnan(x); +end + +M = S./N; +SE = (SSQ.*N - real(S).^2 - imag(S).^2)./(N.*N.*(N-1)); +SE(SE<=0) = 0; % prevent negative value caused by round-off error +SE = sqrt(real(SE)); +