4

このトピックに関する理解できる情報が見つかりません。オランダのウィキペディアで、次の形式の式を生成する z 変換を適用できることがわかりました:
www.music.mcgill.ca/~gary/618/week1/img15.gif

この FIR フィルターは例として使用されます:
upload.wikimedia.org/math/b/9/e/b9e2ed5184f98621922f716e5216f33d.png

z 変換の場合:
upload.wikimedia.org/math/4/d/6/4d6621be8fabf4db8816c12f34ed9877.png

そしてその例では、e^it (虚数単位で累乗した自然対数、および t = シータ) が z に置き換えられます

次に、その関数のプロットが使用され、周波​​数応答と見なされます。この方法は、フィルターの周波数応答を計算する簡単な方法だと思いました。しかし、この方法は有効ですか?小さな遅延(元の信号を「ブロック」する)について考えたとき、信号は変更されず、遅延しただけなので、周波数応答はすべての周波数で 1 になるはずですが、この方法では、次のように計算しました。周波数応答は次のようになります。

y(n) = 0*x(n) + 1*x(n-1)  

Z 変換

H(z) = 0 + 1z^-1

e^it の代入 (t=theta を使用):

H(e^it) = 0 + 1 * e^-it

これは周波数応答として正弦波を生成するので、何か間違ったことをしている、または何かを誤解しているに違いありません。誰かが私を助けてくれたらとてもうれしいです!

4

4 に答える 4

5

rwong のコメントによると、システム関数 H は、特定の周波数でのシステムの位相応答と振幅応答を示します。これは、システムへの入力が cos[ωn] = cos[2πfn] の場合、出力は a(f)cos[2πfn + Φ(f)] になることを意味します。ここで、a(f) = |H(f)| Φ(f) = 位相(H(f))。あなたの場合、信号は決してスケーリングされておらず、時間的にシフトされているだけなので、マグニチュードは 1 です。また、位相シフトは -ω です。ここで、ω はシステムへの正弦波入力の角周波数です。

以下がスタック オーバーフローにとって初歩的すぎないことを願っていますが、時系列分析の基本的な基礎を確認することは、ミニベアや他の人にとって役立つかもしれません。

例のように、インパルス応答が h[n] = δ[n-1] (δ[n] はデルタ関数) のシステムがある場合、これは、入力を 1 タイム ステップ遅らせていることを意味します。 . 正弦波の位相に関して、これが何を意味するか考えてみてください。最も速く変化する正弦波のデジタル周波数は 0.5 (つまり、2 サンプルの周期) です。たとえば、cos[πn] です。これは系列 [1,-1,...] です。この信号を 1 遅延させると、系列 [-1,1,...] が得られます。つまり、cos[πn - π] = cos[π(n - 1)]、つまり入力信号の位相が -π ラジアンだけシフトされます。 (-180 度)。デジタル周波数が 0.25 (つまり、4 サンプルの周期) のより長い周期の信号を見てください。たとえば、cos[0.5πn] です。これはシリーズ [1,0,-1,0,...] です。単位遅延は、系列 [0,1,0,-1,...] を生成します。つまり、cos[0.5πn - 0.5π] = cos[0.5π(n - 1)]、つまり入力信号の位相が - π/2 ラジアン (-90 度)。同様に、

入力角周波数が ω (たとえば 0.5π) の場合、出力が Φ = -ω だけ位相シフトされることは明らかです。信号は、反時計回りのルートで単位円を一周する列車と考えてください。その時系列値は、このルートの停留所に対応しています。0.5π の角周波数は、次のラジアン値で 4 停止することを意味します: 0、0.5π、π、1.5π。その後、0 に戻り、サイクルを何度も繰り返します。この列車が停車によって遅れる場合、それは予定されたルート上で -0.5π ラジアンのシフトに相当します。

H(f) の話に戻りますが、exp(-i2πf) = exp(-iω) となる理由が理解できると思います。同様に、システムの遅延が 2 の場合、h[n] = δ[n-2] および H(f) = exp(-i4πf) = exp(-2iω) となります。これは、2 ストップの遅延です。単位円。システム/フィルターの周波数応答からわかるのはこれだけです。つまり、システムが各入力正弦波を周波数の関数としてどれだけスケールし、遅延させるかということです。

FIR システム (つまり、移動平均モデル [MA] に対応する有限インパルス応答) は、フィード フォワード パス上のデルタ (つまり、スケールと遅延) 関数の和であるため、最も単純です。IIR システム (つまり、自己回帰モデル [AR] に対応する無限インパルス応答) は、フィードバック パスがあるため、分析するのがより興味深いものです。

于 2010-07-04T14:14:44.797 に答える
1

簡単な方法の 1 つは本質的にグラフィカルです。これをアルゴリズムの基礎として使用するか、手動で周波数応答をグラフ化することができます。また、「目で」応答をすばやく把握するのにも役立ちます。これは、FIR フィルターと IIR フィルターの両方で機能します。

最初に、単位円とともに極と零点をグラフにプロットします。次に、周波数応答の大きさを計算する任意の周波数について、次のようにします。

  • すべてのゼロから単位円上の対応する点まで線を引き、それらの長さを計算します。
  • 極についても同じことを行います。
  • すべてのゼロ行の長さを掛けて、積 N を取得します。
  • 電柱の長さについても同じことを行い、これを D と呼びます。
  • 大きさは N / D になります。

明らかに、単位円上のいくつかの点に対して上記の操作を繰り返したいと思うでしょう。

于 2010-07-04T07:29:21.340 に答える
1

チートしてMatlabを使用してください:)

為に

y(n) = 0*x(n) + 1*x(n-1)  

行う

b=[ 0 1 ];
a = 1;
freqz(b,a)
于 2010-11-02T18:12:31.267 に答える
0

ここは問題ありません。あなたはそれを正しくやった。これは正弦関数ではありません。オイラーの方程式からの符号関数は次のとおりです。(e^jw - e^-jw)/j2

つまり、最終的に得られるのは複素数です。したがって、入力が x[n] = cos( pi/3 * n ) であるとします。システムへの出力は y[n] = H(e^jw)*x[n] です。

したがって、デジタル周波数として pi/3 を使用して、入力に周波数応答を乗算します。cos( pi/3 * n ) = ( e^pi/3*n + e^-pi/3*n)/2. したがって、入力を 2 つの別個の信号として扱います。1 つは周波数が pi/3 で、もう 1 つは周波数が -pi/3 です。出力として最終的に得られるのは、 e^-j(pi/3) * e^(pi/3*n) + e^j(pi/3) * e^(-pi/3*n) です。 2*cos( -pi/3*n - pi/3 ) に等しい。信号が遅延しているため、これは予期されたものです。

また、周波数応答として正弦波を使用しても問題はありません。

于 2012-02-24T00:06:06.193 に答える