diff scripts/statistics/base/std.m @ 8977:f464119ec165

further simplify some stats funcs
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 13 Mar 2009 21:26:13 +0100
parents eb63fbe60fab
children 1bf0ce0930be
line wrap: on
line diff
--- a/scripts/statistics/base/std.m
+++ b/scripts/statistics/base/std.m
@@ -76,19 +76,13 @@
     opt = 0;
   endif
 
-  sz = size(a);
-  if (sz (dim) == 1)
-    retval = zeros(sz);
+  n = size (a, dim);
+  if (n == 1)
+    retval = zeros (sz);
   elseif (numel (a) > 0)
-    rng = ones (1, length (sz));
-    rng (dim) = sz (dim);
-    if (opt == 0)
-      retval = sqrt (sumsq (a - repmat(mean (a, dim), rng), dim) / (sz(dim) - 1));
-    else
-      retval = sqrt (sumsq (a - repmat(mean (a, dim), rng), dim) / sz(dim));
-    endif
+    retval = sqrt (sumsq (center (a, dim), dim) / (n + opt - 1));
   else
-    error ("std: invalid matrix argument");
+    error ("std: x must not be empty");
   endif
 
 endfunction