为什么MATLAB的滤波器功能不可交换?

时间:2017-11-06 02:48:19

标签: matlab math

我试图使用MATLAB's filter function并注意到切换b和x(a = 1)会给我不同的结果。

我很困惑为什么会这样。滤波器可以表示为卷积,并且卷积是可交换的,因此假设a为1,如果b和x被切换,我将期望相同的输出。换句话说,使用带滤波器B的输入信号X应该产生与使用具有滤波器X的输入信号B相同的输出,因为X * B = B * X,其中星形表示卷积。

1 个答案:

答案 0 :(得分:0)

filter不对内核B应用卷积。输入参数b定义描述滤波器的多项式的系数。

您正在寻找功能conv

-

编辑:

我的不好,你是对的,转换bx应该给出相同的结果。它对我来说确实如此:

>> x=rand(1,10);
>> y=rand(1,10);
>> filter(b,1,x)
ans =
    0.1713    0.6816    0.9775    1.4413    1.1430    1.2836    1.5635    1.8397    2.3768    1.7775
>> filter(x,1,b)
ans =
    0.1713    0.6816    0.9775    1.4413    1.1430    1.2836    1.5635    1.8397    2.3768    1.7775

filter始终返回x长度的结果,因此,如果bx短,并且您切换它们,那么您会缩短结果回来了。