howto_correlation_sink_c.cc

「howto_correlation_sink_c.cc」の編集履歴(バックアップ)一覧はこちら

howto_correlation_sink_c.cc」(2011/06/21 (火) 00:02:05) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

#ifdef HAVE_CONFIG_H #include <config.h> #endif #include <howto_correlation_sink_c.h> #include <algorithm> #include <gr_io_signature.h> static const int MIN_IN = 1; // mininum number of input streams static const int MAX_IN = -1; // maximum number of input streams static const int MIN_OUT = 1; static const int MAX_OUT = -1; howto_correlation_sink_c::howto_correlation_sink_c (unsigned decimation, int vlen) : gr_sync_decimator ("correlation_sink_c", gr_make_io_signature (MIN_IN, MAX_IN, sizeof (gr_complex) * vlen), gr_make_io_signature (MIN_IN, MAX_IN, sizeof (float) * vlen), //gr_make_io_signature (0, 0, 0), decimation), d_vlen(vlen) { } int howto_correlation_sink_c::work (int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { /* * gr_complex *iptr = (gr_complex *) input_items[0]; * for (int i = 0; i < noutput_items * d_vlen; i++) * d_data.push_back (iptr[i]); */ const gr_complex *in0 = (const gr_complex *) input_items[0]; const gr_complex *in1 = (const gr_complex *) input_items[1]; float *out = (float *) output_items[0]; gr_complex sum_in0, sum_in1; float avg_in0, avg_in1, covar, var_in0, var_in1, corr_coef; int ntaps = decimation (); for (int i = 0; i < noutput_items * d_vlen; i++){ sum_in0 = gr_complex(0, 0); sum_in1 = gr_complex(0, 0); covar = 0; var_in0 = 0; var_in1 = 0; corr_coef = 0; //calculate average of each input for(int j = 0; j < ntaps; j++){ sum_in0 += in0[j]; sum_in1 += in1[j]; } avg_in0 = real(sum_in0) / ntaps; avg_in1 = real(sum_in1) / ntaps; for(int j = 0; j < ntaps; j++){ covar += (real(in0[j]) - avg_in0) * (real(in1[j]) - avg_in1); var_in0 += (real(in0[j]) - avg_in0) * (real(in0[j]) - avg_in0); var_in1 += (real(in1[j]) - avg_in1) * (real(in1[j]) - avg_in1); } corr_coef = covar / (sqrt(var_in0) * sqrt(var_in1)); //calculate correlation coefficient out[i] = corr_coef; } return noutput_items; } howto_correlation_sink_c_sptr howto_make_correlation_sink_c (unsigned decimation, int vlen) { return howto_correlation_sink_c_sptr (new howto_correlation_sink_c (decimation, vlen)); } std::vector<gr_complex> howto_correlation_sink_c::data () const { return d_data; } ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: