我试图使用MATLAB's filter function并注意到切换b和x(a = 1)会给我不同的结果。
我很困惑为什么会这样。滤波器可以表示为卷积,并且卷积是可交换的,因此假设a为1,如果b和x被切换,我将期望相同的输出。换句话说,使用带滤波器B的输入信号X应该产生与使用具有滤波器X的输入信号B相同的输出,因为X * B = B * X,其中星形表示卷积。
答案 0 :(得分:0)
filter
不对内核B应用卷积。输入参数b
定义描述滤波器的多项式的系数。
您正在寻找功能conv。
-
编辑:
我的不好,你是对的,转换b
和x
应该给出相同的结果。它对我来说确实如此:
>> 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
长度的结果,因此,如果b
比x
短,并且您切换它们,那么您会缩短结果回来了。