您的位置:首页 > 编程语言 > Java开发

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

2017-07-23 00:21 585 查看
先贴上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[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的噪声

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: