我試圖實現以下濾波器上的離散信號x
:實現在Matlab
我應該寫一個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)
在此先感謝。
我在想,但輸入信號確實包含dirac,下面是一個圖像:http://i.imgur.com/ZiLO7cG.jpg – Lightvvind
@Lightvvind在DSP中,dirac是單位衝動。在連續時間中,除了't = 0'外,迪拉克的定義是無處不在的,在這種情況下是無限的。 – rayryeng
@rayreng我看到了,我對此毫不知情,謝謝 – Lightvvind