【发布时间】:2016-02-06 19:11:46
【问题描述】:
我正在尝试在离散信号x 上实现以下滤波器:
我应该编写一个 MATLAB 函数,它以长度为 M (> N) 的向量 x 和标量 N 作为输入。输出应该是长度为 M 的向量 y。
然后我应该使用 M = 50、x[n]=cos(n*pi/5)+dirac[n-30]-dirac[n-35] 和 N = 4、8、12 来测试过滤器。
这是我的尝试,它返回带有给定输入的 Inf 和 N:
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)
提前致谢。
【问题讨论】:
标签: matlab filtering signal-processing