如果要通过以下代码在数字样本数组上实现低通滤波器,其中original
是数据的原始数组,new
是过滤后的数据数组,c
是某个常数:
new[0] = original[0];
for(int i=1; i<original.length; i++){
new[i] = new[i-1] + c * (original[i] - new[i-1]);
}
或将第三行替换为的高通滤波器:
new[i] = c * (new[i-1] + original[i] - original[i-1]);
c
和每个截止频率之间的关系是什么?
最佳答案
这两个滤波器都是单极无限冲激响应(IIR) filters。
IIR滤波器在连续时域中具有类似物(例如简单的LC和RC电路)。分析通常从所需的传递函数H(ω)
开始-使用z-tranform转换为离散时间。稍作重新排列,将产生一个方程,您可以求解该方程的滤波器系数。 [H(ω)
在截止频率处为-3dB]。
该 Material 通常在电子工程学位的第一和第二学年授课,因此将提供大量在线和免费的课件。您将需要随附的纯数学类(class)。
许多实用的过滤器设计证明是不可分析的(或至少很难做到)。一种常见的进行方法是数值求解。
MATLAB是许多人的首选工具。 NI LabView也有一个滤波器设计器。都不便宜。
单极点滤波器很容易解决。 this可能有帮助。如果要设计更复杂(或更高级)的过滤器,还可以使用各种在线filter solvers。
关于audio - 具有特定截止频率的低通和高通滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30954044/