Changeset 1381 for trunk/yat/utility


Ignore:
Timestamp:
Jul 17, 2008, 1:14:42 AM (13 years ago)
Author:
Peter
Message:

working on #363

Location:
trunk/yat/utility
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/yat/utility/MatrixWeighted.cc

    r1380 r1381  
    2727#include "MatrixWeighted.h"
    2828
     29#include "DataIterator.h"
     30#include "Matrix.h"
     31#include "WeightIterator.h"
     32
    2933#include <cassert>
    3034#include <vector>
     
    4145
    4246
     47  MatrixWeighted::MatrixWeighted(size_t r, size_t c, double x, double w)
     48    : vec_(std::vector<DataWeight>(r*c, DataWeight(x,w))), columns_(c)
     49  {}
     50
     51 
     52  MatrixWeighted::MatrixWeighted(const MatrixWeighted& other)
     53    : vec_(other.vec_), columns_(other.columns_)
     54  {}
     55
     56
     57  MatrixWeighted::MatrixWeighted(std::istream& is, char sep)
     58  {
     59    Matrix data(is, sep);
     60    Matrix weight;
     61    nan(data, weight);
     62    columns_ = data.columns();
     63    resize(data.columns(), data.rows());
     64    // FIXME
     65    //std::copy(data.begin(), data.end(), make_data_iterator(vec_.begin()));
     66    //std::copy(weight.begin(), weight.end(), make_weight_iterator(vec_.begin()));
     67  }
     68
     69 
     70  MatrixWeighted::iterator MatrixWeighted::begin(void)
     71  {
     72    return iterator(vec_.begin());
     73  }
     74
     75
     76  MatrixWeighted::const_iterator MatrixWeighted::begin(void) const
     77  {
     78    return const_iterator(vec_.begin());
     79  }
     80
     81
     82  MatrixWeighted::iterator MatrixWeighted::begin_column(size_t i)
     83  {
     84    return iterator(vec_.begin()+i, columns_);
     85  }
     86
     87
     88  MatrixWeighted::const_iterator MatrixWeighted::begin_column(size_t i) const
     89  {
     90    return const_iterator(vec_.begin()+i, columns_);
     91  }
     92
     93
     94  MatrixWeighted::iterator MatrixWeighted::begin_row(size_t i)
     95  {
     96    return iterator(vec_.begin()+columns_*i);
     97  }
     98
     99
     100  MatrixWeighted::const_iterator MatrixWeighted::begin_row(size_t i) const
     101  {
     102    return const_iterator(vec_.begin()+columns_*i);
     103  }
     104
     105
     106  size_t MatrixWeighted::columns(void) const
     107  {
     108    return columns_;
     109  }
     110
     111
     112  MatrixWeighted::iterator MatrixWeighted::end(void)
     113  {
     114    return iterator(vec_.end());
     115  }
     116
     117
     118  MatrixWeighted::const_iterator MatrixWeighted::end(void) const
     119  {
     120    return const_iterator(vec_.end());
     121  }
     122
     123
     124  MatrixWeighted::iterator MatrixWeighted::end_column(size_t i)
     125  {
     126    return iterator(vec_.begin()+i+vec_.size(), columns_);
     127  }
     128
     129
     130  MatrixWeighted::const_iterator MatrixWeighted::end_column(size_t i) const
     131  {
     132    return const_iterator(vec_.begin()+i+vec_.size(), columns_);
     133  }
     134
     135
     136  MatrixWeighted::iterator MatrixWeighted::end_row(size_t i)
     137  {
     138    return iterator(vec_.begin()+columns_*(i+1));
     139  }
     140
     141
     142  MatrixWeighted::const_iterator MatrixWeighted::end_row(size_t i) const
     143  {
     144    return const_iterator(vec_.begin()+columns_*(i+1));
     145  }
     146
     147
     148  void MatrixWeighted::resize(size_t rows, size_t columns)
     149  {
     150    columns_ = columns;
     151    vec_.resize(rows*columns);
     152  }
     153
     154 
     155  size_t MatrixWeighted::rows(void) const
     156  {
     157    if (vec_.size())
     158      return vec_.size()/columns_;
     159    return 0;
     160  }
     161
     162
     163  DataWeight& MatrixWeighted::operator()(size_t row, size_t column)
     164  {
     165    assert(column<columns_);
     166    assert(row*column < vec_.size());
     167    return vec_[row*columns_ + column];
     168  }
     169
     170
     171  const DataWeight& MatrixWeighted::operator()(size_t row, size_t column) const
     172  {
     173    assert(column<columns_);
     174    assert(row*column < vec_.size());
     175    return vec_[row*columns_ + column];
     176  }
     177
    43178}}} // of namespace utility, yat and thep
  • trunk/yat/utility/MatrixWeighted.h

    r1380 r1381  
    8989       DataWeight(\a init_value, \a init_weight)
    9090    */
    91     MatrixWeighted(const size_t& r, const size_t& c, double init_value=0,
    92                 double init_weight=1.0);
     91    MatrixWeighted(size_t r, size_t c, double init_value=0,
     92                  double init_weight=1.0);
    9393
    9494    /**
     
    198198
    199199    /**
    200        \brief Transpose the matrix.
    201 
    202        \note This function may invalidate iterators.
    203     */
    204     void transpose(void);
    205 
    206     /**
    207200       \brief Element access operator.
    208201
Note: See TracChangeset for help on using the changeset viewer.