Mercurial > hg > octave-nkf
diff liboctave/Array.cc @ 9046:88bf56bbccca
make Array::find already return Matlab-compatible dimensions
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 27 Mar 2009 12:22:05 +0100 |
parents | 2df28ad88b0e |
children | 2da105bf2507 |
line wrap: on
line diff
--- a/liboctave/Array.cc +++ b/liboctave/Array.cc @@ -2546,6 +2546,21 @@ } } + // Fixup return dimensions, for Matlab compatibility. + // find(zeros(0,0)) -> zeros(0,0) + // find(zeros(1,0)) -> zeros(1,0) + // find(zeros(0,1)) -> zeros(0,1) + // find(zeros(0,X)) -> zeros(0,1) + // find(zeros(1,1)) -> zeros(0,0) !!!! WHY? + // find(zeros(0,1,0)) -> zeros(0,0) + // find(zeros(0,1,0,1)) -> zeros(0,0) etc + + if ((numel () == 1 && retval.is_empty ()) + || (rows () == 0 && dims ().numel (1) == 0)) + retval.dimensions = dim_vector (); + else if (rows () == 1 && ndims () == 2) + retval.dimensions = dim_vector (1, retval.length ()); + return retval; }