0

一次差分方程式があります: y[n] = z0 * [n-1] + x[n] (2-3). 通常、Z 変換を適用してから、「フィルター」関数を使用します。しかし、私の先生はそれを別の方法で行いたいと考えています。

一次差分方程式(2-3)において、yR[n]およびyI[n]は、y[n]の実部および虚部を示すものとする。yR[n-1]、yI[n-1]、x[n]、r、cos m、sin m を使って yR[n] と yI[n] を表現する一対の実数値差分方程式を書きなさい。

(言及するのを忘れていました、x[n]=G*dirac[n] ここで、G は複素定数で、r、cos m、sin m の由来です)。

これが私の結果です(これは私が考えることができる最高のものです):

yR[n]=r(yR[n-1]cosm - yI[n-1]sinm) + xR[n]
yI[n]=r(yI[n-1]cosm + yR[n-1]sinm) + xI[n]

それでは次の質問です。

この実数方程式のペアを実装する MATLAB プログラムを作成し、このプログラムを使用して、r=1/2、m=0、および m=pi/4 の式 (2-3) のインパルス応答を生成します。これら 2 つのケースについて、得られたインパルス応答の実部をプロットします。複素数再帰からの出力の実部と比較 (2-3)

私が理解していないのは、z変換を適用してから「フィルター」機能を使用する以外に、これを行う方法です。ウェブで調べたところ、状態空間形式について何かがありましたが、それが関連しているかどうかはわかりません。また、銀の大皿で解決策を手渡してもらうつもりはありません。解決方法を知りたいだけです。どうもありがとうございました!

4

1 に答える 1

0

あなたは正しい軌道に乗っています。あなたが持っているようなデジタルシステムの場合、初期入力を設定してプログラムを実行するだけです。派手なことをする必要はありません。あなたは問題を非常に考えすぎています。つまり、単純な関数の場合、次のようにすることができます。

f(0)=1;
f(n)=a*f(n-1);

基本的に、このために、f(n) が前の関数を参照する範囲 (おそらく 20 ポイント) をループします。

yR[0]あなたの関数では、実数部 ( ) を 1,yI[0]=0に設定し、しばらく実行しただけだと思います。

私は Matlab が 1 ベースであることを知っているので、実際には最初の値を 1 に設定したいと思うかもしれませんが、同じ原則が適用されます。

于 2015-12-15T01:52:53.177 に答える