.net 消除滤波信号滞后

.net 消除滤波信号滞后,.net,vb.net,signal-processing,median,digital-filter,.net,Vb.net,Signal Processing,Median,Digital Filter,我使用MathDotNet库对输入信号进行了数字滤波。我从我的ADC中获得40个样本,并在获得它们时对每个数据样本进行过滤。我使用了FIR在线滤波器和2中值滤波器。在图像中有一条红线是原始信号,一条蓝线是滤波信号。如图所示,在我的滤波信号中有一个相移。我想把它去掉。有什么办法吗 如果您想在vb.net中查看我的代码以了解一些想法,那么我也可以发布它。如果您使用的是线性相位FIR滤波器,其系数对以采样频率fs采样的信号进行操作,该滤波器将引入0.5*(N-1)*fs(参见示例)。这是完全正常的 为

我使用MathDotNet库对输入信号进行了数字滤波。我从我的ADC中获得40个样本,并在获得它们时对每个数据样本进行过滤。我使用了FIR在线滤波器和2中值滤波器。在图像中有一条红线是原始信号,一条蓝线是滤波信号。如图所示,在我的滤波信号中有一个相移。我想把它去掉。有什么办法吗


如果您想在vb.net中查看我的代码以了解一些想法,那么我也可以发布它。

如果您使用的是线性相位FIR滤波器,其系数对以采样频率
fs
采样的信号进行操作,该滤波器将引入
0.5*(N-1)*fs
(参见示例)。这是完全正常的

为了简化与未滤波信号的比较,你可以考虑:< /P>
  • 将未滤波信号延迟相同的量;或
  • 将滤波后的信号移回图形上的延迟量

  • 如果使用系数为
    N
    的线性相位FIR滤波器对以采样频率
    fs
    采样的信号进行运算,该滤波器将引入
    0.5*(N-1)*fs
    的延迟(参见示例)。这是完全正常的

    为了简化与未滤波信号的比较,你可以考虑:< /P>
  • 将未滤波信号延迟相同的量;或
  • 将滤波后的信号移回图形上的延迟量

  • 根据代码的工作方式(时基),您可能会遇到一些简单的问题,例如何时绘制两条相对的曲线。但是,如果我正确地记得25年前的信号处理课程。。。无法使用FIR滤波器创建0相位滤波器。。。(如果我错了,不要杀了我!)。你是说我得到的相位滞后是可以接受的?如果你对vb.net编程有一些想法,我可以发布一些想法的代码。现在我只讨论相位滞后。我在前面的评论中给出的链接允许你仅从FIR滤波器的阶数(我认为是40)来估计系统FIR滤波器滞后。如果这与你的图表所示相符,你就有你的解释了。如果没有,您必须检查图形的绘制和时间管理是如何工作的。正如@SluethEye提到的,这种延迟是预期的,并且与采样频率和滤波器顺序直接相关。通常,IIR滤波器可以以更低的阶数实现相同的频率响应,从而降低相位延迟。也就是说,您必须小心IIR滤波器的不稳定性和非线性相位响应方面。根据代码的工作方式(时基),您可能会遇到一些简单的问题,例如何时绘制两条相对的曲线。但是,如果我正确地记得25年前的信号处理课程。。。无法使用FIR滤波器创建0相位滤波器。。。(如果我错了,不要杀了我!)。你是说我得到的相位滞后是可以接受的?如果你对vb.net编程有一些想法,我可以发布一些想法的代码。现在我只讨论相位滞后。我在前面的评论中给出的链接允许你仅从FIR滤波器的阶数(我认为是40)来估计系统FIR滤波器滞后。如果这与你的图表所示相符,你就有你的解释了。如果没有,您必须检查图形的绘制和时间管理是如何工作的。正如@SluethEye提到的,这种延迟是预期的,并且与采样频率和滤波器顺序直接相关。通常,IIR滤波器可以以更低的阶数实现相同的频率响应,从而降低相位延迟。也就是说,你必须小心IIR滤波器的不稳定性和非线性相位响应方面。