噪声消除滤波器,带MATLAB

时间:2013-02-24 20:56:21

标签: matlab filter signals noise

我有一个输入信号:

x[n] = sin(pi/10*n) * (u[n] - u[n-10])

和冲动回应:

h[n] = 0.9^n * u[n] + delta(n)

表示系统的回声。所以我试图设计一个回声消除滤波器,但它似乎不对。我想我使用delta函数犯了一个错误。无论如何,我找到DTFT,它是倒数,然后是IDTFT:

g[n] = dirac[n] - 1/2(0.45^n u[n])

所以如果我卷y [n] = x [n] * h [n],然后卷积v [n] = y [n] * g [n],我不应该得到我的原始信号x [ n]回来?我也试过不使用dirac delta函数,只是在其他地方创建了一个零和0的向量,但这也没有用。我哪里做错了?谢谢你看

MATLAB代码:

n = -10:0.1:10;
% input signal
x = sin(pi/10 * n) .* (heaviside(n) - heaviside(n-10));
% echo
h = 0.9 .^ n .* heaviside(n) + dirac(n);
% echo cancelation
g = dirac(n) - 0.5 * (0.45.^n) .* heaviside(n);
% convolutions
y = conv(x,h);
v = conv(y,g);
% plots
figure(1)
stem(x)
figure(2)
stem(y)
figure(3)
stem(v)

0 个答案:

没有答案