DFTの出力を順方向または逆方向にスケーリングするかどうかは、慣例や数学的に便利なこととは関係ありません。DFTへの入力に関係するすべてがあります。順変換と逆変換の両方でスケーリングが必要または不要な例をいくつか示します。
順変換を1 / Nでスケーリングする必要があります。
まず、単純な正弦波を分析するには、数学的に言えば、変換の長さは無関係である必要があることを明確にする必要があります。N = 1024、Freq = 100で、信号が次のとおりであるとします:
f(n)= cos(Freq * 2 * Pi * n / N)
f(n)の1024ポイントDFTを取得すると、bin [100] = 512であることがわかります。ただし、これはNでスケーリングするまで意味のある値ではありません。512/ 1024 = 1/2、そしてもちろん、他の1/2はbin [924]の負のスペクトルにあります。
DFTの長さを2倍、N = 2048にすると、出力値は1024ポイントDFTの2倍になり、1 / Nでスケーリングしない限り、結果は無意味になります。DFTの長さは、この種の分析の要因にはなりません。したがって、この例では、DFTを1 / Nでスケーリングする必要があります。
前方変換をスケーリングしてはなりません。
ここで、32タップFIRフィルターのインパルス応答があり、その周波数応答を知りたいとします。便宜上、ゲイン1のローパスフィルターを想定します。このフィルターの場合、DFTのDC成分は1でなければならないことがわかります。そして、 DFTは、DC成分が単純に入力値の合計(つまり、FIR係数の合計)であるためです。
したがって、この入力では、意味のある答えを得るために、DFTは1 / Nでスケーリングされません。これが、変換の結果に影響を与えることなく、インパルス応答を必要なだけゼロパディングできる理由です。
これら2つの例の根本的な違いは何ですか?
答えは簡単です。最初のケースでは、すべての入力サンプルにエネルギーを供給しました。つまり、正弦波は1024サンプルすべてに存在するため、DFTの出力を1/1024でスケーリングする必要がありました。
2番目の例では、定義により、1つのサンプル(n = 0のインパルス)にのみエネルギーを供給しました。インパルスが32タップフィルターを通過するのに32サンプルが必要でしたが、この遅延は無関係です。1つのサンプルにエネルギーを供給したため、DFTの出力を1でスケーリングします。インパルスが1ではなく2ユニットのエネルギーで定義された場合、出力を1/2でスケーリングします。
逆変換をスケーリングしてはなりません。
次に、逆DFTについて考えてみましょう。フォワードDFTと同様に、エネルギーを供給しているサンプルの数を考慮する必要があります。もちろん、正と負の両方の周波数ビンを適切に埋める必要があるため、ここではもう少し注意する必要があります。ただし、2つの適切なビンにインパルス(つまり、1)を配置すると、逆DFTで使用するポイントの数に関係なく、逆DFTの出力は振幅が2の余弦波になります。
したがって、フォワードDFTと同様に、入力がインパルスの場合、逆DFTの出力をスケーリングしません。
逆変換をスケーリングする必要があります。
次に、ローパスフィルターの周波数応答がわかっていて、インパルス応答を取得するために逆DFTを実行する場合を考えてみましょう。この場合、すべてのポイントでエネルギーを供給するため、意味のある答えを得るには、DFTの出力を1 / Nでスケーリングする必要があります。入力値が複雑になるため、これはそれほど明白ではありませんが、例を介して作業すると、これが正しいことがわかります。1 / Nでスケーリングしない場合、Nのオーダーのピークインパルス応答値が得られますが、これはゲインが1の場合には当てはまりません。
詳細に説明した4つの状況は、DFTの出力をスケーリングする方法が明確なエンドポイントの例です。ただし、エンドポイント間には多くの灰色の領域があります。それでは、別の簡単な例を考えてみましょう。
N = 1024、Freq = 100の次の信号があるとします。
f(n) = 6 * cos(1*Freq * 2*Pi * n/N) n = 0 - 127
f(n) = 1 * cos(2*Freq * 2*Pi * n/N) n = 128 - 895
f(n) = 6 * cos(4*Freq * 2*Pi * n/N) n = 896 - 1023
3つのコンポーネントの振幅、周波数、および持続時間の違いに注意してください。残念ながら、2番目のコンポーネントは他の2つのコンポーネントの1/36の電力レベルですが、この信号のDFTは3つのコンポーネントすべてを同じ電力レベルで表示します。
3つのコンポーネントすべてが同じ量のエネルギーを供給しているという事実は明らかであり、これがDFTの結果を説明していますが、ここで重要なポイントがあります。
さまざまな周波数成分の持続時間がわかっている場合、それに応じてさまざまな周波数ビンをスケーリングできます。この場合、DFTの出力を正確にスケーリングするためにこれを行います。bin [100] / = 128; bin [200] / = 768; bin [400] / = 128;
それが私の最後のポイントになります。一般に、特定の周波数成分がDFTへの入力にどのくらいの時間存在するかはわからないため、この種のスケーリングを行うことはできません。ただし、一般的には、すべてのサンプルポイントにエネルギーを供給します。そのため、信号を分析するときにフォワードDFTを1 / Nでスケーリングする必要があります。
問題を複雑にするために、この信号にほぼ確実にウィンドウを適用して、DFTのスペクトル解像度を改善します。最初と3番目の周波数成分は信号の最初と最後にあるため、27 dB減衰しますが、中心成分は4 dBだけ減衰します(ハニングウィンドウ)。
明確にするために、DFTの出力は、スケーリングされているかどうかにかかわらず、入力のかなり貧弱な表現になる可能性があります。
通常は純粋な数学の問題である逆DFTの場合、未知の信号の分析とは対照的に、DFTへの入力は明確に定義されているため、出力をスケーリングする方法がわかります。
アナログまたはFFTのスペクトラムアナライザで信号を分析する場合、問題は同様です。デューティサイクルも知らない限り、表示される信号のパワーはわかりません。しかし、それでも、ウィンドウイング、スパン、スイープレート、フィルタリング、検出器のタイプ、およびその他の要因はすべて、結果を正すために機能します。
最終的に、時間領域と周波数領域の間を移動するときは、非常に注意する必要があります。スケーリングに関して尋ねた質問は重要なので、出力をスケーリングする方法を知るには、DFTへの入力を理解する必要があることを明確にしたいと思います。入力が明確に定義されていない場合、DFTの出力は、スケーリングするかどうかにかかわらず、非常に懐疑的に見なさなければなりません。