1

入力信号があります:

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

およびインパルス応答:

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

システムのエコーを表します。そこで、エコー キャンセレーション フィルタを設計しようとしていますが、正しくないようです。デルタ関数の使い方が間違っていると思います。とにかく、私は 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] が返ってこないはずです。 ? また、ディラックのデルタ関数を使用しないようにして、ゼロとゼロで 1 のベクトルを作成しましたが、それも機能しませんでした。どこで私は間違えましたか?ご覧いただきありがとうございます

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)
4

0 に答える 0