comparison 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
comparison
equal deleted inserted replaced
9045:ac0a23e9f5c5 9046:88bf56bbccca
2543 } 2543 }
2544 if (k < n) 2544 if (k < n)
2545 retval.resize (k); 2545 retval.resize (k);
2546 } 2546 }
2547 } 2547 }
2548
2549 // Fixup return dimensions, for Matlab compatibility.
2550 // find(zeros(0,0)) -> zeros(0,0)
2551 // find(zeros(1,0)) -> zeros(1,0)
2552 // find(zeros(0,1)) -> zeros(0,1)
2553 // find(zeros(0,X)) -> zeros(0,1)
2554 // find(zeros(1,1)) -> zeros(0,0) !!!! WHY?
2555 // find(zeros(0,1,0)) -> zeros(0,0)
2556 // find(zeros(0,1,0,1)) -> zeros(0,0) etc
2557
2558 if ((numel () == 1 && retval.is_empty ())
2559 || (rows () == 0 && dims ().numel (1) == 0))
2560 retval.dimensions = dim_vector ();
2561 else if (rows () == 1 && ndims () == 2)
2562 retval.dimensions = dim_vector (1, retval.length ());
2548 2563
2549 return retval; 2564 return retval;
2550 } 2565 }
2551 2566
2552 2567