// file: clpc_cal_2.cc // // this function debiases the signal // // system include file // #include // local include file // #include "global_constants.h" #include "calculate_lpc_constants.h" #include "calculate_lpc.h" // function: debias_signal_cc // // arguments: // float*& signal_window_a: (input/output) input signal and output // debiased signal // int num_chans_a: (input) number of channels // int samples_per_win_a: (input) number of samples in the window // int debug_mode_a: (input) debug mode // // return: the status of the routine // // this function debiases the signal using the equation below: // x(k) = x(k) - avg // // where avg = 1/N * sum ( x(n) ) from 0 .. N-1 // and k = 0 .. N-1 // and N = total signal points // // int debias_signal_cc (float*& signal_window_a, int samples_per_win_a, int num_chans_a, int debug_mode_a) { int num_samples = samples_per_win_a * num_chans_a; // compute the average signal value and subtract it from every // original signal value // float signal_avg = 0; for (int chan = 0; chan < num_chans_a; chan++) { for (int sample = chan; sample < num_samples; sample += num_chans_a) { signal_avg += signal_window_a[sample]; } signal_avg /= samples_per_win_a; // subtract this from sample values // for (int sample = chan; sample < num_samples; sample += num_chans_a) { signal_window_a[sample] -= signal_avg; } } if (debug_mode_a > DEBUG_FULL) { for (int chan = 0; chan < num_chans_a; chan++) { for (int sample = chan; sample < num_samples; sample += num_chans_a) { fprintf(stdout, "chan %d :: debias signal [%d] = %.6f\n", chan, sample, signal_window_a[sample]); } } fprintf(stdout, "\n"); } // exit gracefully // return TRUE; }