From: Gehua Y. <ya...@cs...> - 2003-06-19 04:26:35
|
To make it a little clearer, I meant Paul's new design of vnl_matrix_fixed_ref & vnl_vector_fixed_ref (I copied his message in the following). I think this design would make it possible for the class to be transparent to operations such as transpose, retrieving a row or a column from a matrix. I looked at the code of current vnl_matrix_fixed_ref implementation. The features Paul suggested aren't there. Right now vnl_matrix_fixed_ref is inherited from vnl_matrix<T>. Compared with the way vnl_matrix_fixed is implemented, it is not very efficient. Please correct me if I am wrong. Gehua ================================================ > A fancier scheme might take the form of: > > template <typename T, unsigned n, int element_stride> > class vnl_vector_fixed_ref; > > template <typename T, unsigned n, int row_stride, int col_stride> > class vnl_matrix_fixed_ref; > > which would enable references to be taken to non-contiguous memory. > e.g. > > template <typename T, unsigned rows, unsigned cols> > vnl_vector_fixed_ref<T,cols,1> > vnl_matrix_fixed<T,rows,cols>::row_reference(unsigned col_index); > // take reference to contiguous block of memory for a row > > template <typename T, unsigned rows, unsigned cols> > vnl_vector_fixed_ref<T,rows,cols> > vnl_matrix_fixed<T,rows,cols>::col_reference(unsigned col_index); > // take reference to 'spliced' memory for a column > > template <typename T, unsigned rows, unsigned cols> > vnl_matrix_fixed_ref<T,cols,rows,cols,1> > vnl_matrix_fixed<T,rows,cols>::transpose_reference(); > // view fixed matrix as its transpose > > This would enable a function like: > > template <typename T, unsigned r, unsigned c, int r_s, int c_s, int el_s1, > int el_s2> > void mat_vec_mult(matrix_fixed_ref_const<T,r,c,r_s,c_s> A, > vector_fixed_ref_const<T,c,el_s1> x, vector_fixed_ref<T,c,el_s2> y) > // perform y = A x: could be used to perform mulitplication of matrix > transposed as well > etc. etc. ----- Original Message ----- From: "Peter Vanroose" <Pet...@es...> To: "Gehua Yang" <ya...@cs...> Cc: "Paul Smyth" <pau...@vi...>; "Vxl-maintainers (E-mail)" <vxl...@li...> Sent: Wednesday, June 18, 2003 3:19 AM Subject: Re: [Vxl-maintainers] vector + matrix fixed reference classes > > ... Intuitively, it will benefit computation > > of large matrices and large vectors ... > > As far as large vectors/matrices are concerned, there is already an > interface for this: the classes vnl_matrix_ref and vnl_vector_ref. > > vnl_vector_fixed_ref is mainly useful for small size vectors, up to > size 6 say, since it has to be instantiated for all sizes being used. > > > -- Peter. > > > |