changeset 5961:1c61d6a2c9e6

[project @ 2006-08-24 15:57:08 by jwe]
author jwe
date Thu, 24 Aug 2006 15:57:08 +0000
parents 5c2747f40b56
children 2289cafef60d
files scripts/ChangeLog scripts/miscellaneous/bincoeff.m
diffstat 2 files changed, 20 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog	Wed Aug 23 19:54:47 2006 +0000
+++ b/scripts/ChangeLog	Thu Aug 24 15:57:08 2006 +0000
@@ -1,3 +1,8 @@
+2006-08-24  Søren Hauberg  <soren@hauberg.org>
+
+	* miscellaneous/bincoeff.m: Use logical indexing instead of
+	indices computed by calling find on the logical index.
+
 2006-08-23  Quentin Spencer  <qspencer@ieee.org>
 
 	* control/system/tf2zp.m: Simplify gain calculation.
--- a/scripts/miscellaneous/bincoeff.m	Wed Aug 23 19:54:47 2006 +0000
+++ b/scripts/miscellaneous/bincoeff.m	Thu Aug 24 15:57:08 2006 +0000
@@ -68,33 +68,23 @@
   sz = size (n);
   b   = zeros (sz);
 
-  ind = find (! (k >= 0) | (k != real (round (k))) | isnan (n));
-  if (any (ind))
-    b(ind) = NaN;
-  endif
-
-  ind = find (k == 0);
-  if (any (ind))
-    b(ind) = 1;
-  endif
+  ind = (! (k >= 0) | (k != real (round (k))) | isnan (n));
+  b(ind) = NaN;
+  
+  ind = (k == 0);
+  b(ind) = 1;
 
-  ind = find ((k > 0) & ((n == real (round (n))) & (n < 0)));
-  if any (ind)
-    b(ind) = (-1) .^ k(ind) .* exp (gammaln (abs (n(ind)) + k(ind)) ...
-        - gammaln (k(ind) + 1) - gammaln (abs (n(ind))));
-  endif
+  ind = ((k > 0) & ((n == real (round (n))) & (n < 0)));
+  b(ind) = (-1) .^ k(ind) .* exp (gammaln (abs (n(ind)) + k(ind)) ...
+         - gammaln (k(ind) + 1) - gammaln (abs (n(ind))));
 
-  ind = find ((k > 0) & ((n != real (round (n))) | (n >= k)));
-  if (length (ind) > 0)
-    b(ind) = exp (gammaln (n(ind) + 1) - gammaln (k(ind) + 1) ...
-        - gammaln (n(ind) - k(ind) + 1));
-  endif
-
+  ind = ((k > 0) & ((n != real (round (n))) | (n >= k)));
+  b(ind) = exp (gammaln (n(ind) + 1) - gammaln (k(ind) + 1) ...
+         - gammaln (n(ind) - k(ind) + 1));
+ 
   ## clean up rounding errors
-  ind = find (n == round (n));
-  if (any (ind))
-    b(ind) = round (b(ind));
-  endif
-
+  ind = (n == round (n));
+  b(ind) = round (b(ind));
+  
 endfunction