Mercurial > hg > jslab
view src/samer/units/FIRFilter.java @ 8:5e3cbbf173aa tip
Reorganise some more
author | samer |
---|---|
date | Fri, 05 Apr 2019 22:41:58 +0100 |
parents | bf79fb79ee13 |
children |
line wrap: on
line source
/* * Copyright (c) 2000, Samer Abdallah, King's College London. * All rights reserved. * * This software is provided AS iS and WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. */ package samer.units; import samer.core.*; import samer.maths.*; import samer.tools.*; import java.util.*; public class FIRFilter implements Filter { int N; // order of filter double A[]; // coefficients double u[]; // circular buffer of previous values int k; // current position in u buffer public FIRFilter( int n) { N=n; u=new double[n]; A=new double[n]; reset(); } public FIRFilter( double [] A) { N=A.length; u=new double[N]; this.A=A; reset(); } public void dispose() {} public void reset() { Mathx.zero(u); k=0; } /** FIR filter using array of filter coefficients */ public final double filter( double z) { if (k==0) k=N-1; else k--; double y=0; u[k]=z; int i=0, j; for (j=k; j<N; j++) y += u[j]*A[i++]; for (j=0; j<k; j++) y += u[j]*A[i++]; return y; } }