OSDN Git Service

test
[psychlops/cpp.git] / win32gl / test / fftfirm.cpp
1  #include <psychlops.h>\r
2  using namespace Psychlops;\r
3 \r
4 \r
5 void psychlops_main() {\r
6         Canvas cnvs(1024, 768, Canvas::window);\r
7 \r
8         FFT1 fftworkspace;\r
9         Matrix source_mat, filtered_mat, mat;\r
10         source_mat.load("voltage_spec_vaio_ie.csv");\r
11         source_mat.transpose();\r
12 \r
13         //fftworkspace.set(64,64);\r
14         //fftworkspace.makeNoise();\r
15         fftworkspace.set(source_mat);\r
16         fftworkspace.fft();\r
17         fftworkspace.getSpectrum(filtered_mat, 1.0);\r
18 \r
19         int q = filtered_mat.getCols() / 4;\r
20         Interval col;\r
21         mat = filtered_mat(1, q*2+3<=col<=q*3);\r
22         mat.transpose();\r
23         mat.save("voltage_spec.csv");\r
24 \r
25         double mean = 0.0;\r
26         for(int i=0; i<source_mat.getCols(); i++) {\r
27                 mean += source_mat(1, i+1);\r
28         }\r
29         mean /= source_mat.getCols();\r
30         int counter = 0;\r
31         for(int i=1; i<source_mat.getCols()-3; i++) {\r
32                 if(    source_mat(1, i+1)<mean\r
33                         && source_mat(1, i+2)<mean\r
34                         && source_mat(1, i+3)>mean\r
35                         && source_mat(1, i+4)>mean\r
36                 ) { counter++; }\r
37         }\r
38         std::cout << counter << std::endl;\r
39 }\r
40 \r
41 \r
42 /*\r
43 const int S = 128;\r
44 \r
45  void psychlops_main() {\r
46         Canvas cnvs(1024, 768, Canvas::window);\r
47 \r
48         Image source("test.png");\r
49         Image result;\r
50 \r
51         Image img[5];\r
52         //for(int i=0; i<1000; i++){\r
53                 FFT2 fftworkspace;\r
54                 Matrix source_mat(S,S), filtered_mat, filter;\r
55                 for(int x=1; x<=S; x++)\r
56                         for(int y=1; y<=S; y++)\r
57                                 source_mat(x,y) = random(0.0,1.0);\r
58                 //source_mat=FFT2::makeNoise(64, 64);\r
59                 filter=FFT2::makeFilter(S, S, 8, 12);\r
60 \r
61                 //fftworkspace.set(64,64);\r
62                 //fftworkspace.makeNoise();\r
63                 fftworkspace.set(source_mat);\r
64                 fftworkspace.fft();\r
65                 fftworkspace.filtering(filter);\r
66                 fftworkspace.ifft();\r
67                 fftworkspace.getImage(filtered_mat);\r
68 \r
69                 img[0].from(source_mat);\r
70                 img[1].from(filter);\r
71                 img[2].from(filtered_mat);\r
72 \r
73         while(!Keyboard::esc.pushed())\r
74         {\r
75                 cnvs.clear(0.5);\r
76                 for(int i=0; i<5; i++) img[i].centering().shift(-400,0).shift((S+1)*i,0).draw();\r
77                 cnvs.var(Mouse::x, 100, 80);\r
78                 cnvs.var(Mouse::y, 100, 100);\r
79                 cnvs.flip();\r
80         }\r
81 \r
82  }\r
83
84 */\r