我正在尝试对离散信号x
实现以下滤波器:
然后,我应该使用M = 50,x [n] = cos(n * pi / 5)+ dirac [n-30] - dirac [n-35]和N = 4、8、12测试过滤器。
以下是我的尝试,使用给定的输入和N将返回Inf:
function y = filt( x, N )
% filter function
if(~isvector(x))
error('Input must be a vector')
end
y = zeros(1,length(x));
temp = zeros(1,length(x));
n=1;
for v = x(:)
temp(n) = v(n);
if(n <= N-1)
y(n) = max(x);
n = n+1;
elseif(n >= N-1)
y(n) = max(temp);
end
end
end
我也尝试使用内置的
filter
函数,但是我无法让它正常工作。使用过滤器的代码:
p = zeros(1,50);
for i=0:50
p(i+1)= cos(i*pi/5)+dirac(i-30)-dirac(i-35)
end
y = filt(p,4)
提前感谢。
t=0
以外的所有地方都为0,在这种情况下是无限的。 - rayryeng