@@ -38,43 +38,60 @@ int main(){
3838 SEVCHK (ca_pend_io (pend ), "error: ca_pend_io" ) ;
3939
4040 // format
41+ int flag = 0 ;
4142 double signal [2 * length ] ;
4243 convert_real_ (& length , read , signal ) ;
4344
4445 // set window
4546 int order = 2 ;
4647 double window [length ] ;
47- window_ (& length , & order , window ) ;
48+ window_cos_ (& length , & order , window ) ;
4849 double total = 0.0 ;
4950 for (int i = 0 ; i < length ; i ++ ){
5051 total = total + window [i ] ;
5152 }
5253
53- int flag ;
54+ double sequence [2 * length ] ;
55+
56+ // pre-process
57+ remove_window_mean_ (& length , & total , window , signal , sequence ) ;
58+ * signal = * sequence ;
59+
60+ // apply window
61+ apply_window_ (& length , window , signal , sequence ) ;
62+ * signal = * sequence ;
63+
5464 int peak ;
55- double frequency ;
65+ int method = 2 ;
66+ double frequency ;
5667
57- // frequency (bin)
58- flag = 0 ;
68+ // frequency_ (bin)
5969 peak = 0 ;
60- frequency = frequency_ (& flag , & peak , & length , & total , window , signal ) ;
70+ frequency = frequency_ (& flag , & peak , & method , & length , signal ) ;
6171 printf ("frequency_\n" ) ;
6272 printf ("%.15f\n" , frequency ) ;
6373 printf ("\n" ) ;
6474
65- // frequency (peak)
66- flag = 0 ;
67- peak = 1 ;
68- frequency = frequency_ (& flag , & peak , & length , & total , window , signal ) ;
75+ // frequency_ (peak)
6976 printf ("frequency_\n" ) ;
70- printf ("%.15f\n" , frequency ) ;
77+ for (int i = 1 ; i <= 3 ; i ++ )
78+ {
79+ peak = i ;
80+ frequency = frequency_ (& flag , & peak , & method , & length , signal ) ;
81+ printf ("%.15f\n" , frequency ) ;
82+ }
7183 printf ("\n" ) ;
7284
73- // decomposition (subtract)
74- int loop = 3 ;
85+ // restore signal
86+ convert_real_ (& length , read , signal ) ;
87+
88+ int mode ;
89+ int loop = 3 ;
7590 double fre_amp [loop ], cos_amp [loop ], sin_amp [loop ] ;
76- peak = 0 ;
77- decomposition_ (& flag , & peak , & length , & total , window , signal , & loop , fre_amp , cos_amp , sin_amp ) ;
91+
92+ // decomposition_ (subtract)
93+ mode = 0 ;
94+ decomposition_ (& flag , & method , & mode , & length , & length , & total , window , signal , & loop , fre_amp , cos_amp , sin_amp ) ;
7895 printf ("decomposition_\n" ) ;
7996 for (int i = 0 ; i < loop ; i ++ ){
8097 printf ("%.15f %.15f %.15f\n" , fre_amp [i ], cos_amp [i ], sin_amp [i ]) ;
@@ -84,31 +101,46 @@ int main(){
84101 }
85102 printf ("\n" ) ;
86103
87- // frequency list (subtract)
88- peak = 0 ;
89- frequency_list_ (& flag , & peak , & length , & total , window , signal , & loop , fre_amp ) ;
104+ // frequency_list_ (subtract)
105+ frequency_list_ (& flag , & method , & mode , & length , & length , & total , window , signal , & loop , fre_amp ) ;
106+ printf ("frequency_list_\n" ) ;
107+ for (int i = 0 ; i < loop ; i ++ ){
108+ printf ("%.15f\n" , fre_amp [i ]) ;
109+ }
110+ printf ("\n" ) ;
111+
112+ // decomposition_ (peak)
113+ mode = 1 ;
114+ decomposition_ (& flag , & method , & mode , & length , & length , & total , window , signal , & loop , fre_amp , cos_amp , sin_amp ) ;
115+ printf ("decomposition_\n" ) ;
116+ for (int i = 0 ; i < loop ; i ++ ){
117+ printf ("%.15f %.15f %.15f\n" , fre_amp [i ], cos_amp [i ], sin_amp [i ]) ;
118+ fre_amp [i ] = 0.0 ;
119+ cos_amp [i ] = 0.0 ;
120+ sin_amp [i ] = 0.0 ;
121+ }
122+ printf ("\n" ) ;
123+
124+ // frequency_list_ (peak)
125+ frequency_list_ (& flag , & method , & mode , & length , & length , & total , window , signal , & loop , fre_amp ) ;
90126 printf ("frequency_list_\n" ) ;
91127 for (int i = 0 ; i < loop ; i ++ ){
92128 printf ("%.15f\n" , fre_amp [i ]) ;
93129 }
94130 printf ("\n" ) ;
95131
96- // amplitude list (subtract)
132+ // amplitude_list_
97133 amplitude_list_ (& flag , & length , & total , window , signal , & loop , fre_amp , cos_amp , sin_amp ) ;
98134 printf ("amplitude_list_\n" ) ;
99135 for (int i = 0 ; i < loop ; i ++ ){
100136 printf ("%.15f %.15f %.15f\n" , fre_amp [i ], cos_amp [i ], sin_amp [i ]) ;
137+ cos_amp [i ] = 0.0 ;
138+ sin_amp [i ] = 0.0 ;
101139 }
102140 printf ("\n" ) ;
103141
104- // fit_
142+ // fit_ (least squares)
105143 printf ("fit_ \n" ) ;
106- for (int i = 1 ; i <= loop ; i ++ )
107- {
108- peak = i ;
109- frequency = frequency_ (& flag , & peak , & length , & total , window , signal ) ;
110- fre_amp [i - 1 ] = frequency ;
111- }
112144 double mean ;
113145 double error ;
114146 fit_ (& length , data , & loop , fre_amp , & mean , cos_amp , sin_amp , & error ) ;
0 commit comments