Example #1
0
        private DigitalFilter CreateFilter(DigitalFilter source, int left, int right)
        {
            double[] coeffs = Arrays.New(right - left + 1, i => source[i + left]);
            double   factor = GetFactor(coeffs);

            return(new DigitalFilter(-left, coeffs.Select(x => x / factor).ToArray()));
        }
Example #2
0
        public virtual T Sample(T[] source, int center)
        {
            DigitalFilter filter = filters.GetFilter(center, source.Length);
            T             sum    = new T();

            for (int i = filter.Left; i <= filter.Right; i++)
            {
                sum += (dynamic)source[center + i] * filter[i];
            }
            return(sum);
        }
 public DirichletBoundaryHandler(int max)
 {
     fullFilter      = NormalizedDirichlet(max);
     leftFilters[0]  = new DigitalFilter(0, new[] { 0.5, 0.5 });
     rightFilters[0] = new DigitalFilter(1, new[] { 0.5, 0.5 });
     for (int i = 1; i < max; i++)
     {
         DigitalFilter filter = NormalizedDirichlet(i);
         leftFilters[2 * i] = leftFilters[2 * i - 1] = rightFilters[2 * i] = rightFilters[2 * i - 1] = filter;
     }
 }
Example #4
0
 public SumBoundaryHandler(DigitalFilter filter)
 {
     fullFilter = CreateFilter(filter, filter.Left, filter.Right);
     for (int left = filter.Left + 1; left <= 0; left++)
     {
         leftFilters[-left] = CreateFilter(filter, left, filter.Right);
     }
     for (int right = 0; right <= filter.Right - 1; right++)
     {
         rightFilters[right] = CreateFilter(filter, filter.Left, right);
     }
 }
Example #5
0
 public DigitalSampler(DigitalFilter filter) : this(new SumBoundaryHandler(filter))
 {
 }