我想在 matlab 中实现“过滤器”函数,但我似乎无法复制使用 matlab 函数时得到的结果。
我对matlab函数的理解是它需要3个参数:'b'=分子系数数组,'a'=分母系数数组和'array'=要过滤的数组。所以如果你想用过滤器 H(z) 其中:
并将其存储在一个名为“result”的数组中,然后你会写
result = filter( [b1 b2] , [a1 a2] , array );
现在我尝试通过从 H(z) 获取差分方程然后使用它来获取结果数组来实现“过滤器”函数(分子和分母中的系数数量限制为 2),但这条路线似乎没有工作,即
这意味着 matlab 代码应该看起来像
function [ result ] = myFilter( b , a , audio )
%MyFilter
%a,b = Two Element Arrays
%array = the array we want to filter
N = size(audio,2);
for i = 1:N
if( i == 1 )
result(i) = ( b(2)/a(1)) * audio(i);
else
result(i) = ( b(1) / a(1) ) * audio(i) + ...
( b(2) / a(1) ) * audio(i-1) - ...
( a(2) / a(1) ) * result(i-1);
end
end
end
上面的函数不会产生与matlab过滤函数相同的结果。有人知道我做错了什么吗?我是否了解 matlab 中的过滤器功能是如何工作的?