# HG changeset patch # User John W. Eaton # Date 1523377142 14400 # Node ID 2f0c0c0652d5ec532295ffb35374fbf425f1c3c7 # Parent 6f1fde568e46360f76d99566856a97ff8326374b find: return column vector for N-d logical arrays (bug #53603) * find.cc (Ffind): In special case for bool arrays, force return value to be column vector if it is not already a row or column vector. diff -r 6f1fde568e46 -r 2f0c0c0652d5 libinterp/corefcn/find.cc --- a/libinterp/corefcn/find.cc Tue Apr 10 09:54:07 2018 -0400 +++ b/libinterp/corefcn/find.cc Tue Apr 10 12:19:02 2018 -0400 @@ -439,8 +439,14 @@ // matrix. Try to reuse the possibly cached index vector. // No need to catch index_exception, since arg is bool. - // Out-of-range errors have already set pos, and will be caught later. - retval(0) = arg.index_vector ().unmask (); + // Out-of-range errors have already set pos, and will be + // caught later. + + octave_value result = arg.index_vector ().unmask (); + + dim_vector dv = result.dims (); + + retval(0) = (dv.isvector () ? result : result.reshape (dv.as_column ())); } else { @@ -540,6 +546,9 @@ %!assert (find ([1; 0; 3; 0; 1]), [1; 3; 5]) %!assert (find ([0, 0, 2; 0, 3, 0; -1, 0, 0]), [3; 5; 7]) +%!assert <*53603> (find (ones (1,1,2) > 0), [1;2]) +%!assert <*53603> (find (ones (1,1,1,3) > 0), [1;2;3]) + %!test %! [i, j, v] = find ([0, 0, 2; 0, 3, 0; -1, 0, 0]); %!