1 #ifndef STATS_INTERVAL_MAP_H 2 #define STATS_INTERVAL_MAP_H 7 #include <KrisLibrary/structs/array2d.h> 40 std::vector<Real> divs;
49 typedef Real Point[2];
51 typedef size_t Size[2];
57 void InitPartition(
const Size dims,
const Point min,
const Point max);
63 void IntervalRange(
const Index index,Point min,Point max)
const;
74 std::vector<Real> div1,div2;
103 LOG4CXX_ERROR(KrisLibrary::logger(),
"Warning, resizing interval map to have 0 divisions -- was this intended?"<<
"\n");
110 for(
size_t i=0;i<=n;i++) {
117 template <
class Data>
120 assert(divs.size()+1 ==
intervals.size());
121 assert(index >= 0 && index < (
int)
intervals.size());
122 if(index == 0) min=-Inf;
123 else min = divs[index-1];
124 if(index+1 == (
int)
intervals.size()) max=Inf;
125 else max = divs[index];
128 template <
class Data>
132 if(val <= divs.front())
return 0;
133 else if(val > divs.back())
return intervals.size()-1;
135 std::vector<Real>::const_iterator it = --std::lower_bound(divs.begin(),divs.end(),val);
136 int index=(it-divs.begin())+1;
140 assert(a < val && val <= b);
146 template <
class Data>
152 template <
class Data>
160 template <
class Data>
163 if(dims[0] == 0 || dims[1] == 0) {
164 LOG4CXX_ERROR(KrisLibrary::logger(),
"Warning, resizing interval map to have 0 divisions -- was this intended?"<<
"\n");
168 size_t m=dims[0],n=dims[1];
172 Real x=min[0], dx=(max[0]-min[0])/m;
173 for(
size_t i=0;i<=m;i++) {
177 Real y=min[1], dy=(max[1]-min[1])/n;
178 for(
size_t i=0;i<=n;i++) {
185 template <
class Data>
190 assert(index[0] >= 0 && index[0] < (
int)
intervals.m);
191 assert(index[1] >= 0 && index[1] < (
int)
intervals.n);
192 min[0] = (index[0] == 0? -Inf: div1[index[0]-1]);
193 max[0] = (index[0]+1 ==
intervals.m? Inf: div1[index[0]]);
194 min[1] = (index[1] == 0? -Inf: div2[index[1]-1]);
195 max[1] = (index[1]+1 ==
intervals.n? Inf: div2[index[1]]);
198 template <
class Data>
201 if(
intervals.empty()) { index[0]=index[1]=-1;
return; }
202 if(val[0] <= div1.front()) index[0]=0;
203 else if(val[0] > div1.back()) index[0]=
intervals.m-1;
205 std::vector<Real>::const_iterator it = --std::lower_bound(div1.begin(),div1.end(),val[0]);
206 index[0]=(it-div1.begin())+1;
208 if(val[1] <= div2.front()) index[1]=0;
209 else if(val[1] > div2.back()) index[1]=
intervals.n-1;
211 std::vector<Real>::const_iterator it = --std::lower_bound(div2.begin(),div2.end(),val[1]);
212 index[1]=(it-div2.begin())+1;
void InitPartition(const Size dims, const Point min, const Point max)
Creates mxn uniformly spaced intervals betwen min,max.
Definition: IntervalMap.h:161
void Clear()
Sets the interval to be (-inf,inf)
Definition: IntervalMap.h:85
void Fill(const Data &val)
Fills all intervals with the given value.
Definition: IntervalMap.h:59
Contains all definitions in the statistics directory.
Definition: BernoulliDistribution.h:6
Basic statistical utilities.
An integer tuple class.
Definition: IntTuple.h:14
Definition: IntervalMap.h:46
void Clear()
Sets the interval to be (-inf,inf)x(-inf,inf)
Definition: IntervalMap.h:153
const Data & GetIntervalData(Real val) const
Returns the data of the interval containing val.
Definition: IntervalMap.h:35
Division of the real numbers into interval sets. Each interval is assigned data of type Data...
Definition: IntervalMap.h:16
void InitSplit(Real split)
Creates the intervals (-inf,split],(split,inf)
Definition: IntervalMap.h:92
The logging system used in KrisLibrary.
const Data & GetIntervalData(const Point val) const
Returns the data of the interval containing val.
Definition: IntervalMap.h:67
void GetIntervalIndex(const Point val, Index index) const
Returns the index of the interval containing val.
Definition: IntervalMap.h:199
void Fill(const Data &val)
Fills all intervals with the given value.
Definition: IntervalMap.h:27
int GetIntervalIndex(Real val) const
Returns the index of the interval containing val.
Definition: IntervalMap.h:129
void IntervalRange(const Index index, Point min, Point max) const
Returns the range of the interval indexed by index.
Definition: IntervalMap.h:186
void IntervalRange(int index, Real &min, Real &max) const
Returns the range of the interval indexed by index.
Definition: IntervalMap.h:118
void InitPartition(size_t n, Real a, Real b)
Creates n uniformly spaced intervals betwen a,b.
Definition: IntervalMap.h:100
std::vector< Data > intervals
divs.size()+1 intervals (-inf,x0],(x1,x2],...,(xn-1,xn],(xn,inf)
Definition: IntervalMap.h:42