DSP

基于java的滤波器设计(FIR)

2019-07-13 18:42发布

先贴上FIR滤波器的表达式:
y(n)=i=1Nh(i)x(ni)
首先使用matlab生成h参数,方法和上一篇说到的差不多,在此就不赘述了,直接贴上FIR的代码: public class highpass { private static double[] b= {使用MATLAB生成的参数}; private static double[] in; private static double[] outData; public double[] IIRFilter (double[] signal) { in=new double[b.length]; outData=new double[signal.length]; for (int i = 0; i < signal.length; i++) { System.arraycopy(in, 0, in, 1, in.length - 1); //in[1]=in[0],in[2]=in[1]... in[0] = signal[i]; //calculate y based on a and b coefficients //and in and out. double y = 0; for(int j = 0 ; j < b.length ; j++){ y += b[j] * in[j]; } outData[i] = y; } return outData; } } 使用上一篇提到的测试方法进行频谱分析,可以看到这个成功滤去了45hz的噪声
这里写图片描述