我知道这是一个非常基本的问题,而且我是 DSP 的四分之一。我想在 Java 中创建一个函数,它可以接受两个参数,要么(double centerFrequency, double bandWidth)
要么(double startFrequency, double cutoffFrequency)
.
根据我收集的信息,我想要一个非理想的 IIR 滤波器,因为这是我正在使用需要实时更新的加速度计的项目。希望我不会过多地编程,但我的过滤器函数的一般形式是这样的:
double BPFilter(double x, double centerFrequency, double bandWidth) {
double filteredY;
static double[] y = {0, 0, 0};
//y[0] represents y[n]
//y[1] represents y[n-1]
//y[2] represents y[n-2]
y[0] = A*y[2] + B*y[1] + C*x;
y[2] = y[1];
y[1] = y[0];
return y[0];
}
A
计算,B
和的最佳方法是C
什么?目前我知道如何做连续传递函数,, 所以如果可以翻译成A
, B
,C
我可以那样做。采样率为.
TL;DR:手动离散连续传递函数(无 MATLAB)