public static void Draw(double[] freqs, double[] mags) { //double freq_max = 0; //double mag_max = -100; //const double freq_win_min = 8; // was 7 //const double freq_win_max = 13; //var sz = freqs.Length / 2; //for (int i = 0; i < sz; i++) //{ // if (freqs[i] >= freq_win_min && freqs[i] <= freq_win_max && mags[i] > mag_max) // { // freq_max = freqs[i]; // mag_max = mags[i]; // } //} //chart.Series[2].Points.AddY(freq_max); (var min_bin, var max_bin) = FFT.CalcBin(FREQ_MIN_ALPHA, FREQ_MAX_ALPHA, freqs); // частота максимума double freq_max2 = 0; double mag_max2 = -100; for (int i = min_bin; i <= max_bin; i++) { if (mags[i] > mag_max2) { freq_max2 = freqs[i]; mag_max2 = mags[i]; } } s_max.Points.AddY(freq_max2); // взвешенное среднее double mult = 0; double sum = 0; for (int i = min_bin; i <= max_bin; i++) { mult += mags[i] * freqs[i]; sum += mags[i]; } var weighted = mult / sum; s_weighted.Points.AddY(weighted); }