Featuretype.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "vislearning/math/mathbase/Featuretype.h"
  2. using namespace OBJREC;
  3. using namespace NICE;
  4. using namespace std;
  5. FeatureType::FeatureType(const FeatureType &_ft)
  6. {
  7. sv = _ft.sv;
  8. v = _ft.v;
  9. ft = _ft.ft;
  10. }
  11. FeatureType::FeatureType(int f, int dim)
  12. {
  13. ft = f;
  14. setDim(dim);
  15. }
  16. FeatureType::FeatureType(SparseVector &tsv) : sv(tsv)
  17. {
  18. sv = tsv;
  19. ft = SPARSEVECTORFEATURE;
  20. v.clear();
  21. }
  22. FeatureType::FeatureType(Vector &tv) //: v(tv)
  23. {
  24. v.resize(tv.size());
  25. for(int i = 0; i < v.size(); i++)
  26. {
  27. v[i] = tv[i];
  28. }
  29. ft = VECTORFEATURE;
  30. sv.clear();
  31. }
  32. void FeatureType::setDim(int dim)
  33. {
  34. if(ft == SPARSEVECTORFEATURE)
  35. {
  36. sv.setDim(dim);
  37. }
  38. else
  39. {
  40. v.resize(dim);
  41. }
  42. }
  43. double FeatureType::get(int pos) const
  44. {
  45. assert(pos < getDim());
  46. if(ft == SPARSEVECTORFEATURE)
  47. {
  48. return sv.get(pos);
  49. }
  50. else
  51. {
  52. return v[pos];
  53. }
  54. }
  55. int FeatureType::getType()
  56. {
  57. return ft;
  58. }
  59. int FeatureType::getDim() const
  60. {
  61. if(ft == SPARSEVECTORFEATURE)
  62. {
  63. return sv.getDim();
  64. }
  65. else
  66. {
  67. return (int)v.size();
  68. }
  69. }
  70. const NICE::Vector& FeatureType::getVec() const
  71. {
  72. return v;
  73. }
  74. const SparseVector& FeatureType::getSVec() const
  75. {
  76. return sv;
  77. }