diff scripts/statistics/median.m @ 4:b4df021f796c

[project @ 1993-08-08 01:26:08 by jwe] Initial revision
author jwe
date Sun, 08 Aug 1993 01:26:08 +0000
parents
children 16a24e76d6e0
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/scripts/statistics/median.m
@@ -0,0 +1,38 @@
+function retval = median (a)
+
+# usage: median (a)
+#
+# For vector arguments, return the median of the values.
+#
+# For matrix arguments, return a row vector containing the median for
+# each column.
+#
+# See also: std, mean
+
+  if (nargin != 1)
+    error ("usage: medain (a)");
+  endif
+
+  [nr, nc] = size (a);
+  s = sort (a);
+  if (nr == 1 && nc > 0)
+    if (rem (nc, 2) == 0)
+      i = nc/2;
+      retval = (s (i) + s (i+1)) / 2;
+    else
+      i = ceil (nc/2);
+      retval = s (i);
+    endif
+  elseif (nr > 0 && nc > 0)
+    if (rem (nr, 2) == 0)
+      i = nr/2;
+      retval = (s (i,:) + s (i+1,:)) / 2;
+    else
+      i = ceil (nr/2);
+      retval = s (i,:);
+    endif
+  else
+    error ("median: invalid matrix argument");
+  endif
+
+endfunction