我需要从信号中滤除一些噪声,而简单的RC一阶滤波器似乎还不够。我一直在环顾四周,但我还没有找到其他滤波器的算法(尽管有很多关于如何使用模拟电路的例子)。有人可以找到我在哪里可以找到这样的算法吗?或者至少在这里写一个?
为了澄清:我从示波器接收信号,我只有一个周期。这个周期看起来有点像:
125 * (x > 3 ? exp(-(x - 3) / 2) : exp(5*(x - 3)))
现在,信号并不总是具有这种形状,我需要计算信号的导数,这很容易,如果没有,因为当一个放大信号足够时(每个点是160纳秒的appart)你可以看到很多噪声。因此,在计算衍生物之前,我需要平坦化信号。
答案 0 :(得分:1)
如果您要问的是如何设计更高阶的过滤器而不是简单的第一个订单,那么如何从这里选择过滤器:wiki on Filter_(signal_processing)
只是假设你的问题,所以这里有几个设计点。
1)您可能不希望在通带中出现纹波(变化增益),因为这会使您的信号失真。
2)你可能不关心在你的阻带中出现波纹,因为无论如何信号应该接近0。
3)滤波器的阶数越高,它就越像理想的方形滤波器。
4)滚降越高越好,你想尽快减少通带外的噪音。
5)您可能会或可能不关心“群延迟”,这是由不同频率通过滤波器的不同频率引起的失真的度量。对于音频,你可能想要一个不太高的群延迟,因为你可以想象不同的频率分量经历不同的时间(因此相位)移位会导致一些失真。
根据这些(可能还有其他)注意事项选择所需的过滤器后,只需使用某些拓扑实现它,如here
所述。答案 1 :(得分:0)
对您的要求只有模糊的描述,很难给出任何具体的建议。
您需要指定滤波器的参数:采样率,截止频率,过渡带宽度,通带纹波,最小阻带抑制,相位和群延迟是否是一个问题等。一旦你至少将这些参数中的一部分固定下来然后你就可以开始选择合适的滤波器设计,即基本滤波器类型,阶段数等等。
知道要过滤哪种信号也是有帮助的 - 是音频还是别的?每个样本多少位?
答案 2 :(得分:0)
您需要对信号进行良好定义,对噪声进行良好分析,并清楚地了解两者之间的差异,以确定哪种算法适合删除信号而不消除另一种信息。那么你需要定义计算环境(整数或浮点ALU,加法和乘法周期?),并设置计算预算。二阶IIR和千兆点FFT之间存在很大差异。
RBJ's biquad cookbook中描述了一些非常常用的二阶数字滤波器。