Mercurial > hg > octave-lyh
changeset 10805:8c858a1a2079
simplify Matrix::extract
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 20 Jul 2010 12:56:05 +0200 |
parents | 3d5c6b84ddaf |
children | 7c542263a92a |
files | liboctave/CMatrix.cc liboctave/ChangeLog liboctave/dMatrix.cc liboctave/fCMatrix.cc liboctave/fMatrix.cc |
diffstat | 5 files changed, 16 insertions(+), 68 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/CMatrix.cc +++ b/liboctave/CMatrix.cc @@ -903,28 +903,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; - - ComplexMatrix 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)); } ComplexMatrix ComplexMatrix::extract_n (octave_idx_type r1, octave_idx_type c1, octave_idx_type nr, octave_idx_type nc) const { - ComplexMatrix 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.
--- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,11 @@ +2010-07-20 Jaroslav Hajek <highegg@gmail.com> + + * dMatrix.cc (Matrix::extract, Matrix::extract_n): Reimplement using + index. + * fMatrix.cc (FloatMatrix::extract, FloatMatrix::extract_n): Ditto. + * CMatrix.cc (ComplexMatrix::extract, ComplexMatrix::extract_n): Ditto. + * fCMatrix.cc (FloatComplexMatrix::extract, FloatComplexMatrix::extract_n): Ditto. + 2010-07-13 Jaroslav Hajek <highegg@gmail.com> * MSparse.h (MSparse<T>::index): Remove overloads.
--- a/liboctave/dMatrix.cc +++ b/liboctave/dMatrix.cc @@ -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.
--- a/liboctave/fCMatrix.cc +++ b/liboctave/fCMatrix.cc @@ -902,28 +902,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; - - FloatComplexMatrix 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)); } FloatComplexMatrix FloatComplexMatrix::extract_n (octave_idx_type r1, octave_idx_type c1, octave_idx_type nr, octave_idx_type nc) const { - FloatComplexMatrix 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.
--- a/liboctave/fMatrix.cc +++ b/liboctave/fMatrix.cc @@ -579,28 +579,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; - - FloatMatrix 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)); } FloatMatrix FloatMatrix::extract_n (octave_idx_type r1, octave_idx_type c1, octave_idx_type nr, octave_idx_type nc) const { - FloatMatrix 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.