JASPL  0.2
Just Another Signal Processing Library
All Classes Functions Pages
jvector.h
1 #ifndef JVECTOR_H
2 #define JVECTOR_H
3 
4 //C System-Headers
5 //
6 //C++ System headers
7 #include <vector>
8 #include <string>
9 #include <iostream>
10 //Boost Headers
11 #include <boost/lexical_cast.hpp> //lexical cast (unsurprisingly)
12 //Miscellaneous Headers
13 //
14 //Project specific headers
15 #include "../JASPL/jTypeTraits/jtypetraits.h"
16 
17 namespace jaspl {
18 
19 template <class F>
20 class JVector {
21 
22  public:
23  JVector(std::string raw_data);
24  JVector(std::vector<F> vec);
25  JVector(F* ptr, uint ptr_size);
26  JVector(uint size);
27  JVector(uint size, F fill_element);
28  JVector();
29 
30  ~JVector();
31 
32  template <class T> friend void plot ( JVector<T>& vec );
33  template <class T> friend void plot ( JVector<T>& vec, std::string plot_title );
34 
35  #include "jvector_templates.tpp"
36 
37  double norm();
38  void Normalize();
39 
40  double std_dev();
41  double mean();
42 
43  F min();
44  F max();
45 
46  uint size();
47 
48  private:
49  bool check_if_arithmetic(F input);
50 
51  void ParseRawData(std::string raw);
52  uint num_chars(std:: string raw_data, char delim );
53 
54  double sum( std::vector<F>& data_list , double exponent = 1.0 );
55  double mean( std::vector<F>& data_list );
56  double std_dev( std::vector<F> &data_list );
57 
58  std::vector<F> underlying_vector;
59 };
60 
61 }
62 #endif // JVECTOR_H