純粋な正弦波のDFT

Oct 11 2020

サウンドのフーリエ変換に追加して波を合成し、変換を逆にして修正されたサウンドを取得できるプログラムを作成しています。これを行うには、純粋な波を合成するためにDFTに何を追加するかを知る必要があります。私は多くの情報源からフーリエ合成について学ぼうとしましたが、それらはすべてフーリエ変換ではなくフーリエ級数について話し、純粋な波の場合に必要なのはその波の周波数の係数の値だけであると言っています。そして他のどこでも0。しかし、フーリエ変換は連続関数です。そして、ここで、純粋な12KHz正弦波のフーリエ変換がどのように見えるかを見ることができます(対数スケールで)。ご覧のとおり、これは単なる瞬間的なピークではなく、他のすべての場所では0です。

だから私は自分で数学をやろうとしました。正式に言えば、サンプリングされた信号があるとしましょう$S_t=A cos(\frac{-2 \pi k}{N} t + \phi)$、 どこ 、 $N$ 信号内のサンプル数です。 $0 \le t < N$、 $A$ は振幅です $0 \le k < \frac{N}{2}$ 波の周波数を決定し、 $\phi$波の位相です。この信号のDFTはシーケンスになります$F_0,...,F_{N-1}$ どこ:

$$ F_r = \sum_{t=0}^{N-1}{{S_t}e^{\frac{-2 \pi i t r}{N}}} $$

私たちの信号は純粋な波なので、計算式が直接あることを願っていました $F_r$ これは、上記の計算を直接実行するよりもはるかに高速に計算でき、その式は、リンクした画像のスパイクの形状になります。これが私が本当に興味を持っているものだからです。簡単にするために、 $\phi=0$、そのケースを解決する方法を理解したら、おそらくそれを一般化できるでしょう。それは重要ではなく、おそらくあなたはすでに答えを知っているので、私はすべての数学であなたを退屈させません。私が最後に得たのはそれです$F_k = F_{N-k} = \frac{NA}{2}$、および他のすべての場合 $0 \le r < N, F_r = 0$。

ショッカー。だから結局、波の周波数を除いてどこでも0に等しいことがわかりました。しかし、リンクしたグラフのスパイク形状がどこから来ているのかわかりません。興味のある周波数に対応する1つのサンプルに追加するだけではうまくいかないので、私はまだそれを追いかけています(私は試しました)。

だから私の質問は、純粋な波のフーリエ変換をプロットしても、その波の周波数に対応するサンプルを除くすべてのサンプルで実際にゼロが生成されないのはなぜですか、そしてあなたが見るそのスパイクの式は何ですか?

回答

4 ZaellixA Oct 11 2020 at 18:16

まず、DSPSEへようこそ。

リンクした画像に表示されるものは、(スペクトル)漏れと呼ばれます。フーリエ級数を扱うときは、(おそらく)無限の和(級数)に「分解」される周期連続関数を扱います。次に、フーリエ変換に進むと、無限に分解される非周期関数(たとえば、x軸で開始および終了する場合、ある間隔で周期的であると推定できる可能性があります)があります。スペクトル成分の合計(スペクトルのすべてのポイントにエネルギーがあります)。

先に進む前に、これはフーリエ級数とフーリエ変換についての非常に簡単な説明であり、多くの詳細が省略されており、数学的な解釈が完全に正しいというよりも便利な方法で示されていることに注意してください。このトピックの詳細については、Kwong-Tin Tang博士による教科書「エンジニアと科学者のための数学的方法3-フーリエ解析、部分微分方程式、変分法」を強くお勧めします(本の最初の部分はここに関連しています)。

ここで、連続領域から離散領域に移動すると(ここでは、自由変数の離散化を扱います。これは、デジタル信号を扱うときの現実のように振幅ではなく時間です)、フーリエ変換から移動します。離散フーリエ変換(DFT)へ。繰り返しになりますが、「技術的」詳細を省略して、DFTで、信号に分析対象の信号の持続時間内に整数の完全な周期を作らない周波数(スペクトル)成分が含まれている場合、リークと呼ばれる現象が発生します(上記のリンクを参照してください)。これは、信号が周期的であると想定される変換の「性質」によるものです。したがって、信号の持続時間内に整数の周期を完了しないスペクトル成分がある場合、信号の終わりまたは始まりのいずれかでゼロ以外の振幅(この成分の場合)になります。元の信号の前後で信号を「コピーアンドペースト」しようとすると(変換の目的で周期的にするために)、元の信号と「」が発生した時点で不連続になることに気付くでしょう。コピーアンドペースト」信号が開始されます。この不連続性を再構築するには、無限の量のスペクトル成分を導入する必要があります。これは、主要なスペクトル成分の周囲の周波数のエネルギーとして現れます(「純粋な」(コ)正弦波しかない場合)。下の写真で単一周波数の例を見ることができます。

さて、DFTを扱うときにおそらく(常にではないにしても!)頻繁に遭遇するもう1つの概念は、ウィンドウという用語です。信号にウィンドウ関数を適用しない(説明のためにもう少し我慢してください)という単純なケースでは、信号のすべての値に1を掛けて、効果的に何もしない「長方形」ウィンドウを適用するようなものです。彼らへ。

信号にウィンドウ関数を適用すると、上の画像の右側の2番目のプロットに表示されるような不連続性の出現を回避するために、信号のエッジを効果的に抑制します。したがって、あなたはどういうわけか漏れ効果を抑制します。ウィンドウ関数を適用する最も簡単な方法は、信号のサンプルに時間領域のウィンドウ関数を要素ごとに乗算することであることに注意してください。

ハンウィンドウを適用した後の上の画像の右側の信号は、下の画像のようになります。

そして、ウィンドウ処理の前後のスペクトルの「より明確な」表現については、この画像を見ることができます

ピークはそれほど局所化されていませんが、リークは以前よりも小さな「近隣」に制限されていることがわかります。ウィンドウ処理とウィンドウ関数の詳細については、ウィキペディアのページ(上記の「ウィンドウ」という単語のリンク)およびデジタル信号処理-Proakis&Manolakisによる原理アルゴリズムとアプリケーションなどの基本的なデジタル信号処理の教科書を参照してください。またはOrfanidisによる信号処理の概要(無料で配布されています)。

hotpaw2 Oct 13 2020 at 11:09

純粋な単一周波数の正弦波は、持続時間が無限です。DFT(および実際の宇宙)に収まるように短く切り刻むと、有限長のカットにより、無限長の正弦波の完全なスペクトルにウィンドウアーティファクトが追加されます。

ゼロノイズの純粋な正弦波の場合、方程式を指定する純粋な正弦波の3つの未知数を解くために、3つまたは4つのエイリアシングされていないポイントのみが必要です。ノイズを追加すると、ノイズに隠されているものを推定するためのすべてのポイントが必要になります。