先贴上FIR滤波器的表达式:
y(n)=∑i=1Nh(i)x(n−i)
首先使用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[0] = signal[i];
double y = 0;
for(int j = 0 ; j < b.length ; j++){
y += b[j] * in[j];
}
outData[i] = y;
}
return outData;
}
}
使用上一篇提到的测试方法进行频谱分析,可以看到这个成功滤去了45hz的噪声