internal static DFTWAVES init_dftwaves(List <double> dft_coefs, int nwaves, int blocksize) { DFTWAVES dftwaves = new DFTWAVES(); DFTWAVE dftwaveResult = new DFTWAVE(); double pi_factor, freq, x; dftwaves.nwaves = nwaves; dftwaves.wavelen = blocksize; dftwaves.waves = new List <DFTWAVE>(); //count = nwaves pi_factor = 2.0 * M_PI / (double)blocksize; for (int i = 0; i < nwaves; ++i) { dftwaveResult = new DFTWAVE(); dftwaveResult.sin = new List <double>(); // count = blocksize dftwaveResult.cos = new List <double>(); // count = blocksize freq = pi_factor * dft_coefs[i]; for (int j = 0; j < blocksize; ++j) { x = freq * j; dftwaveResult.cos.Add(Math.Cos(x)); dftwaveResult.sin.Add(Math.Sin(x)); } dftwaves.waves.Add(dftwaveResult); } return(dftwaves); }
internal static DFTWAVES init_dftwaves(List<double> dft_coefs, int nwaves, int blocksize) { DFTWAVES dftwaves = new DFTWAVES(); DFTWAVE dftwaveResult = new DFTWAVE(); double pi_factor, freq, x; dftwaves.nwaves = nwaves; dftwaves.wavelen = blocksize; dftwaves.waves = new List<DFTWAVE>(); //count = nwaves pi_factor = 2.0 * M_PI / (double)blocksize; for (int i = 0; i < nwaves; ++i) { dftwaveResult = new DFTWAVE(); dftwaveResult.sin = new List<double>(); // count = blocksize dftwaveResult.cos = new List<double>(); // count = blocksize freq = pi_factor * dft_coefs[i]; for (int j = 0; j < blocksize; ++j) { x = freq * j; dftwaveResult.cos.Add(Math.Cos(x)); dftwaveResult.sin.Add(Math.Sin(x)); } dftwaves.waves.Add(dftwaveResult); } return dftwaves; }
internal static double dft_power(int[] rowsums, DFTWAVE wave, int wavelen) { double cospart = 0.0, sinpart = 0.0; for (int i = 0; i < wavelen; i++) { cospart += rowsums[i] * wave.cos[i]; sinpart += rowsums[i] * wave.sin[i]; } return(cospart * cospart + sinpart * sinpart); }
internal static double dft_power(int[] rowsums, DFTWAVE wave, int wavelen) { double cospart = 0.0, sinpart = 0.0; for (int i = 0; i < wavelen; i++) { cospart += rowsums[i] * wave.cos[i]; sinpart += rowsums[i] * wave.sin[i]; } return cospart * cospart + sinpart * sinpart; }