diff liboctave/dMatrix.cc @ 10805:8c858a1a2079

simplify Matrix::extract
author Jaroslav Hajek <highegg@gmail.com>
date Tue, 20 Jul 2010 12:56:05 +0200
parents 832732c2eb80
children 7c542263a92a
line wrap: on
line diff
--- a/liboctave/dMatrix.cc	Tue Jul 20 12:50:54 2010 +0200
+++ b/liboctave/dMatrix.cc	Tue Jul 20 12:56:05 2010 +0200
@@ -580,28 +580,13 @@
   if (r1 > r2) { octave_idx_type tmp = r1; r1 = r2; r2 = tmp; }
   if (c1 > c2) { octave_idx_type tmp = c1; c1 = c2; c2 = tmp; }
 
-  octave_idx_type new_r = r2 - r1 + 1;
-  octave_idx_type new_c = c2 - c1 + 1;
-
-  Matrix result (new_r, new_c);
-
-  for (octave_idx_type j = 0; j < new_c; j++)
-    for (octave_idx_type i = 0; i < new_r; i++)
-      result.xelem (i, j) = elem (r1+i, c1+j);
-
-  return result;
+  return index (idx_vector (r1, r2+1), idx_vector (c1, c2+1));
 }
 
 Matrix
 Matrix::extract_n (octave_idx_type r1, octave_idx_type c1, octave_idx_type nr, octave_idx_type nc) const
 {
-  Matrix result (nr, nc);
-
-  for (octave_idx_type j = 0; j < nc; j++)
-    for (octave_idx_type i = 0; i < nr; i++)
-      result.xelem (i, j) = elem (r1+i, c1+j);
-
-  return result;
+  return index (idx_vector (r1, r1 + nr), idx_vector (r2, r2 + nr));
 }
 
 // extract row or column i.