Mercurial > hg > octave-nkf
diff liboctave/Sparse.cc @ 10533:f094ac9bc93e
reuse Array<T>::cat and Sparse<T>::cat in cat/horzcat/vertcat
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 19 Apr 2010 15:31:49 +0200 |
parents | 2dd8ea8bfd71 |
children | 3f973f6c841c |
line wrap: on
line diff
--- a/liboctave/Sparse.cc +++ b/liboctave/Sparse.cc @@ -2402,12 +2402,17 @@ // sparse vertcat. This is not efficiently handled by assignment, so // we'll do it directly. octave_idx_type l = 0; - for (octave_idx_type j = 0; j < n; j++) + for (octave_idx_type j = 0; j < dv(1); j++) { + octave_quit (); + octave_idx_type rcum = 0; for (octave_idx_type i = 0; i < n; i++) { const Sparse<T>& spi = sparse_list[i]; + if (spi.dims ().zero_by_zero ()) + continue; + octave_idx_type kl = spi.cidx(j), ku = spi.cidx(j+1); for (octave_idx_type k = kl; k < ku; k++, l++) { @@ -2425,12 +2430,14 @@ } case 1: { - octave_idx_type ccum = 0; + octave_idx_type l = 0; for (octave_idx_type i = 0; i < n; i++) { - octave_idx_type l = ccum, u = ccum + sparse_list[i].columns (); + octave_quit (); + + octave_idx_type u = l + sparse_list[i].columns (); retval.assign (idx_vector::colon, idx_vector (l, u), sparse_list[i]); - ccum = u; + l = u; } break;