在MATLAB中,如果我有一些信号x
,请说
x = rand(1,1000)
我想通过使用订单y
的自回归(AR)过滤器过滤x
来生成M
。我怎样才能找到y(n)
?因为自回归滤波器需要过去的输出值进行计算,但我还没有任何过去的输出。我只有输入样本x
。
在移动平均线(MA)过滤器中,我可以轻松生成y(n)
,因为它只需要我可以提供的过去输入,因为我们有x
,如下所示
for n=1:1000
sum=0;
for k=1:M+1
if (n-k+1>0)
sum = sum + (1/M)*x(n-k+1); % MA depends on current & previous input
end
end
y(n)=sum;
end
有人可以帮我为Autoregressive过滤器生成相同的内容吗?
答案 0 :(得分:1)
在移动平均滤波器中,您显示基本上能够通过假设在x(1)
中第一个提供的值之前的过去输入样本为零来计算输出。
类似地,对于自回归滤波器,您可以通过假设在第一个计算值y(1)
之前的过去输出为零来计算输出:
for n=1:1000
% Add feedforward section for ARMA filter
% ... for an AR filter this is just sum=x(n)
sum = x(n);
% Feedback section
for k=2:M+1 % normalized AR (assuming a(1) equals 1)
if (n-k+1>0)
sum = sum + a(k)*y(n-k+1);
end
end
y(n) = sum;
end
更一般地说,您还可以通过使用一些先前已知的初始条件对过滤器进行种子计算来计算输出(尽管在您的特定情况下,您指示那些初始条件是未知的)。