逆向工程贝塞尔 LPF(需要采样频率)

信息处理 过滤器设计 低通滤波器
2022-02-17 12:35:14

我有以下源代码。据我所知,它应该是 10Hz 的 Bessel LPF。有没有办法从中获得采样频率?

double LPF(register double value) { 
    static double buf[4];
    register double tmp, fir, iir;
    tmp= buf[0]; memmove(buf, buf+1, 3*sizeof(double));
    iir= val * 1.865660386328251e-06;
    iir -= 0.9048452950692862*tmp; fir= tmp;
    iir -= -1.898666438223082*buf[0]; fir += buf[0]+buf[0];
    fir += iir;
    tmp= buf[1]; buf[1]= iir; val= fir;
    iir= val;
    iir -= 0.8712702520352774*tmp; fir= tmp;
    iir -= -1.866439169696869*buf[2]; fir += buf[2]+buf[2];
    fir += iir;
    buf[3]= iir; val= fir;
    return val;
}
2个回答

我不认为德夫的回答是正确的。该系数确定归一化频率中的传递函数。您可以确定传递函数达到 -3dB 的相对频率。假设它是 0.01。由于您知道这对应于 10 Hz,因此您可以推断出采样率确实是 1000Hz。这段代码很难阅读,没有一行注释,也没有任何关于状态变量的解释,所以很难准确地知道哪个数字是什么系数(b0,b1,b2,a0,a1,a2等),但原则上可以推断采样率。

在数字信号处理中,一切都归一化为采样频率,因此与采样频率无关。在数字信号转换为模拟信号之前,没有定义采样频率。

假设数字低通滤波器的 3dB 截止频率为 0.2,滤波后的信号以 50 个样本/秒的速率转换为模拟信号。然后您将看到模拟信号的截止频率为 10 Hz。

因此,在您的情况下,如果您查看包括 DSP 和数模转换在内的整个系统,如果您知道模拟信号的截止频率和数字滤波器的归一化截止频率,则可以计算采样频率。但仅靠源码无法确定采样频率。