由于某种原因,我不得不在Matlab中使用递归移动平均滤波器而不使用conv函数。你能给我一些建议来改进我的代码吗?我的顾问说这不是一个递归函数,我不能完全理解他的话。请帮帮我
function out = mva(x,h);
m=length(x); %Length of input signal
n=length(h); %Length of window
X=[x,zeros(1,n)]; %Make x and h same length vector X,H
H=[h,zeros(1,m)];
for i=1:n+m-1 %Create output vector
if i == 1
Y(1) = (X(1)*H(1))/n;
elseif i <= n
Y(i) = Y(i-1)+X(i)/n;
else
Y(i) = Y(i-1)+X(i)/n-X(i-n)/n;
end
out = Y;
end