修订版 | 10 (tree) |
---|---|
时间 | 2010-04-20 20:59:53 |
作者 | (del#42041) |
(empty log message)
@@ -4,10 +4,17 @@ | ||
4 | 4 | #include <filter.h> |
5 | 5 | using namespace std; |
6 | 6 | |
7 | -Particles<int> func(Particles<int> &p) | |
7 | +Particles<int> func(Particles<int> &p, Particles<double> &v) | |
8 | 8 | { |
9 | 9 | // Particles a(5,3); |
10 | 10 | // Particles a; |
11 | + for(int i=0;i<p.size();++i) | |
12 | + { | |
13 | + for(int j=0;j<p[i].size();++j) | |
14 | + { | |
15 | + p[i][j]= (int)((double)p[i][j]+v[i][j]); | |
16 | + } | |
17 | + } | |
11 | 18 | cout<<"state function"<<endl; |
12 | 19 | return(p); |
13 | 20 | } |
@@ -29,9 +36,19 @@ | ||
29 | 36 | a.setDimension(3); |
30 | 37 | a.createInitialParticles(); |
31 | 38 | a.dump_predict_particles(); |
39 | + } | |
40 | + void test_manipulation(void) | |
41 | + { | |
42 | + Filter a; | |
43 | + a.setNumber(5); | |
44 | + a.setDimension(3); | |
45 | + a.createInitialParticles(); | |
46 | + a.createSystemNoise(); | |
47 | + a.dump_predict_particles(); | |
48 | + a.dump_System_Noise(); | |
32 | 49 | a.set_state_func(&func); |
33 | - Particles<int> b(5,3); | |
34 | - a.get_next_state(b); | |
50 | + a.get_next_state(); | |
51 | + a.dump_predict_particles(); | |
35 | 52 | } |
36 | 53 | } |
37 | 54 | int main() |
@@ -3,12 +3,12 @@ | ||
3 | 3 | SRCS=particle.cc particles.cc filter.cc |
4 | 4 | OBJS=$(SRCS:.cc=.o) |
5 | 5 | HEADS=$(SRCS:.cc=.h) |
6 | -TARGETS=libparticle.so | |
6 | +TARGETS=libparticle.a | |
7 | 7 | AR=@AR@ |
8 | 8 | CFLAGS=-I. -g -Wall |
9 | 9 | all: $(TARGETS) |
10 | 10 | |
11 | -libparticle.so: $(OBJS) | |
11 | +libparticle.a: $(OBJS) | |
12 | 12 | $(AR) rv $@ $(OBJS) |
13 | 13 | #libparticle.so: $(OBJS) |
14 | 14 | # libtool --mode=link $(CXX) -o $(@:.so=.la) $(OBJS:.o=.lo) $(LDFLAGS) -shared |
@@ -80,3 +80,4 @@ | ||
80 | 80 | } |
81 | 81 | |
82 | 82 | template class Particle<int>; |
83 | +template class Particle<double>; |
@@ -40,10 +40,10 @@ | ||
40 | 40 | { |
41 | 41 | for(int j=0;j<v[i].size();++j) |
42 | 42 | { |
43 | -// v[i][j] = | |
43 | + v[i][j] = mtrand.randNorm(); | |
44 | 44 | } |
45 | 45 | } |
46 | - | |
46 | + return(true); | |
47 | 47 | } |
48 | 48 | int Filter::dump_predict_particles() |
49 | 49 | { |
@@ -50,15 +50,18 @@ | ||
50 | 50 | x.dump_particles(); |
51 | 51 | return(0); |
52 | 52 | } |
53 | -bool Filter::set_state_func(Particles<int> (*func)(Particles<int> &p)) | |
53 | +int Filter::dump_System_Noise() | |
54 | 54 | { |
55 | + v.dump_particles(); | |
56 | + return(0); | |
57 | +} | |
58 | +bool Filter::set_state_func(Particles<int> (*func)(Particles<int> &p, Particles<double> &v)) | |
59 | +{ | |
55 | 60 | state_func = func; |
56 | 61 | return(true); |
57 | 62 | } |
58 | -Filter & Filter::get_next_state(Particles<int> &p) | |
63 | +Filter & Filter::get_next_state() | |
59 | 64 | { |
60 | -cout<<"go..."<<endl; | |
61 | - (*state_func)(p); | |
62 | -cout<<"ok..."<<endl; | |
65 | + (*state_func)(x, v); | |
63 | 66 | return(*this); |
64 | 67 | } |
@@ -56,3 +56,6 @@ | ||
56 | 56 | } |
57 | 57 | return(0); |
58 | 58 | } |
59 | + | |
60 | +template class Particles<int>; | |
61 | +template class Particles<double>; | |
\ No newline at end of file |
@@ -9,12 +9,13 @@ | ||
9 | 9 | |
10 | 10 | class Filter |
11 | 11 | { |
12 | - Particles<int> x, v; | |
12 | + Particles<int> x; | |
13 | + Particles<double> v; | |
13 | 14 | double w; |
14 | 15 | MTRand mtrand; |
15 | 16 | vector<int> y; |
16 | 17 | int number, dimension; |
17 | - Particles<int> (*state_func)(Particles<int> &p); | |
18 | + Particles<int> (*state_func)(Particles<int> &p, Particles<double> &v); | |
18 | 19 | public: |
19 | 20 | Filter(); |
20 | 21 | ~Filter(); |
@@ -23,8 +24,9 @@ | ||
23 | 24 | bool createInitialParticles(); |
24 | 25 | bool createSystemNoise(); |
25 | 26 | int dump_predict_particles(); |
26 | - bool set_state_func(Particles<int> (*func)(Particles<int> &p)); | |
27 | - Filter & get_next_state(Particles<int> &p); | |
27 | + bool set_state_func(Particles<int> (*func)(Particles<int> &p, Particles<double> &v)); | |
28 | + Filter & get_next_state(); | |
29 | + int dump_System_Noise(); | |
28 | 30 | }; |
29 | 31 | |
30 | 32 | #endif |
@@ -3,12 +3,12 @@ | ||
3 | 3 | SRCS=particle.cc particles.cc filter.cc |
4 | 4 | OBJS=$(SRCS:.cc=.o) |
5 | 5 | HEADS=$(SRCS:.cc=.h) |
6 | -TARGETS=libparticle.so | |
6 | +TARGETS=libparticle.a | |
7 | 7 | AR=ar |
8 | 8 | CFLAGS=-I. -g -Wall |
9 | 9 | all: $(TARGETS) |
10 | 10 | |
11 | -libparticle.so: $(OBJS) | |
11 | +libparticle.a: $(OBJS) | |
12 | 12 | $(AR) rv $@ $(OBJS) |
13 | 13 | #libparticle.so: $(OBJS) |
14 | 14 | # libtool --mode=link $(CXX) -o $(@:.so=.la) $(OBJS:.o=.lo) $(LDFLAGS) -shared |