与えられた微分方程式:
y[n] - 0.9y[n-1] + 0.81y[n-2] = x[n] - x[n-2]
a。h[n], n=0,1,2
再帰を使用するためのインパルス応答を見つけます。
b。MATLABコマンドフィルターを使用してインパルス応答を見つけます。
与えられた微分方程式:
y[n] - 0.9y[n-1] + 0.81y[n-2] = x[n] - x[n-2]
a。h[n], n=0,1,2
再帰を使用するためのインパルス応答を見つけます。
b。MATLABコマンドフィルターを使用してインパルス応答を見つけます。
これは宿題だと理解しているので、実際に答えを完全に明かすことなく、ガイドラインを提供しようと思います。
微分方程式には再帰関数の本体がほぼ完全に含まれているため、これは実際には非常に単純です。y [n] = 0.9y [n - 1] --0.81y [n-2] + x [n] --x [n- 2]
太字の部分は実際には再帰呼び出しです!あなたがする必要があるのは、とfunc
を受け取り、計算する関数(それを呼びましょう)x
をn
構築することy[n]
です:
function y = func(x, n)
if (n < 0)
%# Handling for edge case n<0
return 0
else if (n == 0)
%# Handling for edge case n=0
return x(0)
else
%# The recursive loop
return 0.9 * func(x, n-1) - 0.81 * func(x, n-2) + x(n) - x(n-2)
end
これは擬似コードであるため、エッジケースを確認し、インデックス付けを処理する必要があることに注意してください(MATLABのインデックスは0ではなく1で始まります!)。
デジタルフィルターの応答は、実際にはあなたが探しているy[n]です。レッスンでご存知かもしれませんが、そのフィルターの係数は微分方程式で指定された係数になります。MATLABには、filter
それをエミュレートする関数が組み込まれているため、次のように記述します。
B = [1, 0, 1]; %# Coefficients for x
A = [1, 0.9, -0.81]; %# Coefficients for y
y = filter(B, A, x);
y[n]のすべての値を保持する出力ベクトルを取得します。
a=[1 -0.9 0.81]
b=[1 -1]
impz(b,a,50)