datafunc.h

Go to the documentation of this file.
00001 #ifndef __DATAFUNC_H 00002 #define __DATAFUNC_H 00003 00004 #include <vector> 00005 #include <selforg/matrix.h> 00006 00007 00008 /// INPUT / Output Data selectors 00009 typedef matrix::Matrix (*DataFunc)(const std::vector<matrix::Matrix>& data, int time); 00010 00011 matrix::Matrix tm12(const std::vector<matrix::Matrix>& data, int time){ 00012 assert(time>1); 00013 return data[time-1].above(data[time-2]); 00014 } 00015 00016 matrix::Matrix tm123(const std::vector<matrix::Matrix>& data, int time){ 00017 assert(time>2); 00018 return data[time-1].above(data[time-2].above(data[time-3])); 00019 } 00020 00021 matrix::Matrix tm125(const std::vector<matrix::Matrix>& data, int time){ 00022 assert(time>4); 00023 return data[time-1].above(data[time-2].above(data[time-5])); 00024 } 00025 00026 00027 matrix::Matrix tm12345(const std::vector<matrix::Matrix>& data, int time){ 00028 assert(time>4); 00029 return data[time-1].above(data[time-2].above(data[time-3].above(data[time-4].above(data[time-5])))); 00030 } 00031 00032 matrix::Matrix tm12358(const std::vector<matrix::Matrix>& data, int time){ 00033 assert(time>7); 00034 return data[time-1].above(data[time-2].above(data[time-3].above(data[time-5].above(data[time-8])))); 00035 } 00036 00037 matrix::Matrix tm125_10_20(const std::vector<matrix::Matrix>& data, int time){ 00038 assert(time>19); 00039 return data[time-1].above(data[time-2].above(data[time-5].above(data[time-10].above(data[time-20])))); 00040 } 00041 00042 matrix::Matrix tm1_to_20(const std::vector<matrix::Matrix>& data, int time){ 00043 assert(time>19); 00044 matrix::Matrix rv=data[time-1]; 00045 for(int i=2; i<=20; i++){ 00046 rv = rv.above(data[time-i]); 00047 } 00048 return rv; 00049 } 00050 00051 matrix::Matrix t_01m1_to_10(const std::vector<matrix::Matrix>& data, int time){ 00052 assert(time>9); 00053 matrix::Matrix rv=data[time].rows(0,1); 00054 for(int i=1; i<=10; i++){ 00055 rv = rv.above(data[time-i]); 00056 } 00057 return rv; 00058 } 00059 00060 matrix::Matrix tm0_to_10_01(const std::vector<matrix::Matrix>& data, int time){ 00061 assert(time>9); 00062 matrix::Matrix rv=data[time].rows(0,1); 00063 for(int i=1; i<=10; i++){ 00064 rv = rv.above(data[time-i].rows(0,1)); 00065 } 00066 return rv; 00067 } 00068 00069 00070 matrix::Matrix t(const std::vector<matrix::Matrix>& data, int time){ 00071 assert(time>=0); 00072 return data[time]; 00073 } 00074 00075 matrix::Matrix t_01(const std::vector<matrix::Matrix>& data, int time){ 00076 assert(time>=0); 00077 return data[time].rows(0,1); 00078 } 00079 00080 matrix::Matrix t_012(const std::vector<matrix::Matrix>& data, int time){ 00081 assert(time>=0); 00082 return data[time].rows(0,2); 00083 } 00084 00085 matrix::Matrix t_23(const std::vector<matrix::Matrix>& data, int time){ 00086 assert(time>=0); 00087 return data[time].rows(2,3); 00088 } 00089 00090 DataFunc datafunctions(const std::string& name){ 00091 if(name=="tm12") return &tm12; 00092 if(name=="tm123") return &tm123; 00093 if(name=="tm125") return &tm125; 00094 if(name=="tm12345") return &tm12345; 00095 if(name=="tm12358") return &tm12358; 00096 if(name=="tm125_10_20") return &tm125_10_20; 00097 if(name=="tm1-20") return &tm1_to_20; 00098 if(name=="t_01m1-10") return &t_01m1_to_10; 00099 if(name=="tm0-10_01") return &tm0_to_10_01; 00100 if(name=="t") return &t; 00101 if(name=="t_01") return &t_01; 00102 if(name=="t_012") return &t_012; 00103 if(name=="t_23") return &t_23; 00104 std::cerr << "Unknown Data-function: " << name << std::endl; 00105 exit(1); 00106 return 0; 00107 } 00108 00109 #endif

Generated on Tue Jan 16 02:14:35 2007 for Robotsystem of the Robot Group Leipzig by doxygen 1.3.8