public FilterChain(Filter[] filters) { if (filters == null) throw new ArgumentException("Filter array cannot be null."); this.filters = filters; return; }
/// <summary> /// Applies a nth-order Butterworth filter. /// </summary> /// <param name="factor"></param> /// <param name="filterOrder"></param> public DecimationFilter(int factor, int filterOrder, bool bidirectional) { this.factor = factor; Util.Pair<double,double> cornerFreqs = new Util.Pair<double,double>(Math.PI / factor, 0.0); FilterOrderSpec spec = FilterOrderSpec.CreateButterworthSpec(cornerFreqs, filterOrder, BandType.LowPass); Filter antiAliasFilter = FilterFactory.CreateIirFilter(spec); if(bidirectional) antiAliasFilter = new BidirectionalFilter(antiAliasFilter); Filter downSampleFilter = new DownSampleFilter(factor); filter = new FilterChain(new Filter[] { antiAliasFilter, downSampleFilter }); return; }
/// <summary> /// Creates a bidirectional filter from any filter. /// </summary> public BidirectionalFilter(Filter filter) { this.filter = filter; return; }