# HG changeset patch # User David Bateman # Date 1271205041 -7200 # Node ID f6959aff84ca19e9d0c19bb0aea8cb4d2e258f06 # Parent fcafe0e9bd586cd351d9d81be299dc73cc91cff3 Reimplement discrete_cdf using the lookup function diff --git a/scripts/ChangeLog b/scripts/ChangeLog --- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,7 @@ +2010-04-13 David Bateman + + * statistics/discrete_cdf.m: Reimplement using lookup. + 2010-04-13 Shai Ayal * plot/__fltk_ginput__.m: New functions, implement ginput for diff --git a/scripts/statistics/distributions/discrete_cdf.m b/scripts/statistics/distributions/discrete_cdf.m --- a/scripts/statistics/distributions/discrete_cdf.m +++ b/scripts/statistics/distributions/discrete_cdf.m @@ -1,5 +1,4 @@ -## Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2004, 2005, 2006, -## 2007 Kurt Hornik +## Copyright (C) 2010 David Bateman ## ## This file is part of Octave. ## @@ -24,9 +23,6 @@ ## assumes the values in @var{v} with probabilities @var{p}. ## @end deftypefn -## Author: KH -## Description: CDF of a discrete distribution - function cdf = discrete_cdf (x, v, p) if (nargin != 3) @@ -57,7 +53,8 @@ k = find (!isnan (x)); if (any (k)) n = length (k); - cdf (k) = ((x(k) * ones (1, m)) >= (ones (n, 1) * v)) * p; + [vs, vi] = sort (v); + cdf = [0 ; cumsum(p(vi))](lookup (vs, x(k)) + 1); endif endfunction