Mercurial > hg > octave-nkf
comparison src/data.cc @ 10352:a3635bc1ea19
remove Array2
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 23 Feb 2010 16:12:27 +0100 |
parents | 12884915a8e4 |
children | a0b51ac0f88a |
comparison
equal
deleted
inserted
replaced
10351:5150ceb4dbb4 | 10352:a3635bc1ea19 |
---|---|
4889 { | 4889 { |
4890 error ("reshape: invalid arguments"); | 4890 error ("reshape: invalid arguments"); |
4891 return retval; | 4891 return retval; |
4892 } | 4892 } |
4893 | 4893 |
4894 // Remove trailing singletons in new_size, but leave at least 2 | 4894 dim_vector new_dims = dim_vector::alloc (new_size.length ()); |
4895 // elements. | 4895 |
4896 | 4896 for (octave_idx_type i = 0; i < new_size.length (); i++) |
4897 int n = new_size.length (); | 4897 { |
4898 | 4898 if (new_size(i) < 0) |
4899 while (n > 2) | 4899 { |
4900 { | 4900 error ("reshape: size must be nonnegative"); |
4901 if (new_size(n-1) == 1) | 4901 break; |
4902 n--; | 4902 } |
4903 else | 4903 else |
4904 break; | 4904 new_dims(i) = new_size(i); |
4905 } | 4905 } |
4906 | 4906 |
4907 if (n < 2) | 4907 if (! error_state) |
4908 { | 4908 retval = args(0).reshape (new_dims); |
4909 error ("reshape: expecting size to be vector with at least 2 elements"); | |
4910 return retval; | |
4911 } | |
4912 | |
4913 dim_vector new_dims; | |
4914 | |
4915 new_dims.resize (n); | |
4916 | |
4917 for (octave_idx_type i = 0; i < n; i++) | |
4918 new_dims(i) = new_size(i); | |
4919 | |
4920 octave_value arg = args(0); | |
4921 | |
4922 dim_vector dims = arg.dims (); | |
4923 | |
4924 if (new_dims.numel () == dims.numel ()) | |
4925 retval = (new_dims == dims) ? arg : arg.reshape (new_dims); | |
4926 else | |
4927 { | |
4928 std::string dims_str = dims.str (); | |
4929 std::string new_dims_str = new_dims.str (); | |
4930 | |
4931 error ("reshape: can't reshape %s array to %s array", | |
4932 dims_str.c_str (), new_dims_str.c_str ()); | |
4933 } | |
4934 | 4909 |
4935 return retval; | 4910 return retval; |
4936 } | 4911 } |
4937 | 4912 |
4938 /* | 4913 /* |