Beispiel #1
0
        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);
        }