0

与えられた微分方程式: y[n] - 0.9y[n-1] + 0.81y[n-2] = x[n] - x[n-2]

a。h[n], n=0,1,2再帰を使用するためのインパルス応答を見つけます。

b。MATLABコマンドフィルターを使用してインパルス応答を見つけます。

4

2 に答える 2

5

これは宿題だと理解しているので、実際に答えを完全に明かすことなく、ガイドラインを提供しようと思います。

再帰を使用する

微分方程式には再帰関数の本体がほぼ完全に含まれているため、これは実際には非常に単純です。y [n] = 0.9y [n - 1] --0.81y [n-2] + x [n] --x [n- 2]

太字の部分は実際には再帰呼び出しです!あなたがする必要があるのは、とfuncを受け取り、計算する関数(それを呼びましょう)xn構築すること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]のすべての値を保持する出力ベクトルを取得します。

于 2012-05-19T14:39:12.827 に答える
-1
a=[1 -0.9 0.81]
b=[1 -1]
impz(b,a,50)
于 2018-11-28T13:49:24.523 に答える