public MelFilter2(double center, double delta, double[] melPoints) { var lastIndex = 0; var firstIndex = melPoints.Length; var left = center - delta; var right = center + delta; var heights = new double[melPoints.Length]; for (var i = 0; i < heights.Length; ++i) { if (left < melPoints[i] && melPoints[i] <= center) { heights[i] = (melPoints[i] - left) / (center - left); firstIndex = Math.Min(i, firstIndex); lastIndex = i; } if (center < melPoints[i] && melPoints[i] < right) { heights[i] = (right - melPoints[i]) / (right - center); lastIndex = i; } } _offset = firstIndex; _weights = Java.CopyOfRange(heights, firstIndex, lastIndex + 1); }