私はデジタル画像復元の分野で働いています。畳み込みに関するすべてのことを読みました。LTIシステムでは、インパルス応答を知っていれば、入力とインパルス応答の間の畳み込みを使用するだけで出力を見つけることができます。
誰もがその背後にある主要な数学的哲学は何であるか教えてもらえますか?あなたの経験はそれについての単なるインターネットサーフィン以上のものを私に教えてくれます。
私はデジタル画像復元の分野で働いています。畳み込みに関するすべてのことを読みました。LTIシステムでは、インパルス応答を知っていれば、入力とインパルス応答の間の畳み込みを使用するだけで出力を見つけることができます。
誰もがその背後にある主要な数学的哲学は何であるか教えてもらえますか?あなたの経験はそれについての単なるインターネットサーフィン以上のものを私に教えてくれます。
回答:
畳み込みのアイデア
このトピックに関する私のお気に入りの説明は、Brad Osgoodのフーリエ変換に関する講義の 1つです。畳み込みの議論は36:00頃から始まりますが、講義全体には、見る価値のある追加のコンテキストがあります。
基本的な考え方は、フーリエ変換のようなものを定義するとき、常に定義を直接操作するのではなく、計算を簡素化するより高いレベルのプロパティを導出することが有用であるということです。たとえば、そのような特性の1つは、2つの関数の合計の変換が変換の合計に等しいことです。つまり、
つまり、未知の変換を持つ関数があり、既知の変換を持つ関数の合計として分解できる場合、基本的には無料で答えが得られます。
さて、2つの変換の合計に対するアイデンティティがあるので、2つの変換の積に対するアイデンティティが何であるかを尋ねるのは自然な質問です。
答えを計算すると、畳み込みが表示されます。派生物全体がビデオで提供されており、あなたの質問はほとんど概念的なものであるため、ここでは説明しません。
この方法で畳み込みに近づくことの意味は、それがラプラス変換(そのフーリエ変換が特別なケースである)が線形定数係数常微分方程式(LCCODE)を代数方程式に変える方法の本質的な部分であるということです。そのような変換がLCCODEを分析的に扱いやすくするために利用できるという事実は、それらが信号処理で研究される理由の大部分です。たとえば、OppenheimとSchaferを引用するには:
それらは数学的に比較的容易に特徴付けられ、有用な信号処理機能を実行するように設計できるため、線形シフト不変システムのクラスが広範囲に研究されます。
したがって、質問に対する1つの答えは、変換メソッドを使用してLTIシステムを分析および/または合成している場合、遅かれ早かれ畳み込みが(暗黙的または明示的に)発生するということです。畳み込みを導入するこのアプローチは、微分方程式のコンテキストでは非常に標準的であることに注意してください。たとえば、Arthur MattuckによるこのMIT講義を参照してください。ほとんどのプレゼンテーションは、コメントなしで畳み込み積分を提示し、その特性を引き出します(つまり、帽子からそれを引き出します)。または、積分の奇妙な形式について裾と鷹、反転とドラッグ、時間反転などについて話します。 。
私がオズグッド教授のアプローチが好きな理由は、それがすべてのツォリスを回避するだけでなく、数学者が最初にアイデアにたぶん到達した方法についての深い洞察を提供するからです。そして私は引用します:
「時間領域でFとGを組み合わせて、周波数領域でスペクトルを乗算し、フーリエ変換を乗算する方法はありますか?」そして、答えは、そうです、この複雑な積分によるものです。それほど明白ではありません。あなたは朝ベッドから起きてこれを書き留めて、これがその問題を解決するだろうと期待しないでしょう。どうやって手に入れますか?あなたは言った、問題が解決されたと仮定し、何が起こらなければならないかを見て、それから私たちは勝利を宣言する時が来たと認識する必要があるだろう。そして、勝利を宣言する時です。
今、不快な数学者であるあなたは、あなたのトラックをカバーし、「まあ、私は単にこの式で2つの関数の畳み込みを定義するつもりです」と言います。
LTIシステム
ほとんどのDSPテキストでは、畳み込みは通常、別の方法で導入されます(変換メソッドへの参照を回避します)。任意の入力信号をスケーリングおよびシフトされた単位インパルスの合計として表すことにより、
どこ
線形時不変システムの定義プロパティは、インパルス応答含む畳み込み和を直接導きます。LTIオペレータによって定義されたシステムならばLは、のように表現されるY (N )= L [ X (N )]、次いでrepective特性を適用することにより、すなわち、直線
および時間/シフト不変性
システムは次のように書き直すことができます
これは畳み込みを表現する非常に標準的な方法であり、完全にエレガントで便利な方法です。同様の派生は、OppenheimとSchafer、ProakisとManolakis、RabinerとGoldで見つけることができます。Dilipは、ここでの優れた回答の中で、[標準的な紹介よりもさらに深い]より深い洞察を示しています。
ただし、この派生はやや手品であることに注意してください。で信号がどのように分解されるかをもう一度見てみると、すでに畳み込みの形になっていることがわかります。もし
そして、だけであるX * δ。デルタ関数は畳み込みの恒等要素であるため、その形式で信号を表現できるということは、任意の数nがn + 0またはn × 1として表現できるということとよく似ています。さて、インパルス応答の概念に直接つながるため、そのように信号を記述することを選択するのは素晴らしいことです。たたみ込みの概念は、すでに信号の分解にすでに「組み込まれている」からです。
この観点から見ると、畳み込みは本質的にデルタ関数の概念に関連しています(つまり、デルタ要素を恒等要素として持つバイナリ演算です)。畳み込みとの関係を考慮しなくても、信号の記述はデルタ関数の概念に大きく依存します。では、そもそもデルタ関数のアイデアはどこから得たのでしょうか?私の知る限り、少なくとも熱の分析理論に関するフーリエの論文にまでさかのぼります。さらなる情報源の1つは、アレハンドロドミンゲスによる畳み込みの起源と歴史に関するこの論文です。
さて、これらは線形システム理論の文脈におけるアイデアへの2つの主要なアプローチです。1つは分析的洞察を優先し、もう1つは数値解を優先します。畳み込みの重要性の全体像をつかむには、両方とも役立つと思います。ただし、線形システムを完全に無視する離散的なケースでは、畳み込みがはるかに古いアイデアであるという感覚があります。
多項式乗算
離散畳み込みは単なる多項式乗算であるという考え方の良いプレゼンテーションの1つは、5 :46頃から始まるこの講義で Gilbert Strangによって与えられました。その観点から、このアイデアは位置番号システム(暗黙的に多項式として数を表す)の導入にまでさかのぼります。Z変換は信号をzの多項式として表すため、そのコンテキストでも畳み込みが発生します。これは、Z変換が正式に複雑な分析に頼らない遅延演算子として、および/またはラプラスの特殊なケースとして定義されている場合でも同様です変換します。
私はかつてウィキペディアの畳み込みディスカッションページで答えを出しましたが、基本的に同じ質問をしました:なぜ時間反転ですか?。哲学は、時間0で単一パルスをフィルターに適用し、時間0、1、2、3、4、…で応答を記録することです。基本的に、応答は関数h(t)のようになります。プロットできます。パルスがn倍高い/高い場合、応答パルスは比例して高くなります(これは、線形フィルターが常に想定されるためです)。さて、DSPだけではなく、すべてのDSPは、信号にフィルターを適用したときに何が起こるかについてです。インパルス応答を知っています。信号(特にデジタル)は、高さx(t)の一連のパルスにすぎません。時刻tに高さ/値ます。線形システムは優れているため、このような各入力パルスの出力を合計して、入力関数x(t)の応答関数y(t)を取得できます。出力パルスy(t = 10)は、h(0)* x(10)に寄与する即時入力x(10)に依存することを知っています。しかし、前のパルスx(9)からの出力への寄与x(9)* h(1)、および以前の入力値からの寄与もあります。前の入力からの寄与を追加すると、ある引数が減少し、別の引数が増加することがわかります。もしMAC畳み込みであるY(10)= H(0)* X(10)+ H(1)* X(9)+ H(2)* X(8)+ ...、にすべての貢献。
関数y(t)、h(t)およびx(t)はベクトルと考えることができます。行列は線形代数の演算子です。入力ベクトル(一連の数字)を受け取り、出力ベクトル(別の一連の数字)を生成します。この場合、yはベクトルxの畳み込み行列の積です。
これで、畳み込みはテプリッツ行列であるため、フーリエ固有基底を持ち、したがって、畳み込み演算子(線形演算子は行列で表されますが、行列も基底に依存します)はフーリエ領域のすてきな対角行列です。
はるかに多くのゼロ、したがって、はるかに簡単な計算に注意してください。この結果は「畳み込み定理」として知られており、最初の回答が答えたように、フーリエ領域でははるかに簡単です。しかし、これは、たたみ込みのユビキタスな必要性ではなく、「畳み込み定理」、フーリエ基底、線形演算子の背後にある物理学です。
通常、入力信号、インパルス応答があり、時間領域で出力する必要があるため、畳み込みを行います。計算を最適化するためにフーリエ空間に変換できます。しかし、DSPGuideで見たように、単純なフィルターには実用的ではありません。フィルターが、フーリエ変換には意味がありません。すべてのyを計算するために、n回の乗算を行うだけです。リアルタイムでも自然です。リアルタイムでは、一度に1つのyのみを計算します。信号xを記録していて、ベクトルy全体を一度に計算する必要がある場合、フーリエ変換を考えることができます。これにはNxN MAC操作が必要であり、フーリエはそれらをN log(N)に減らすのに役立ちます。
これまでの答えは本当に良かったですが、畳み込みについての私の視点を付け加えたいと思います。ここでは、数字のために視覚化を簡単にします。
与えられた入力信号に対してシステムの出力信号を決定できる方法があるかどうか疑問に思います。システムが線形で時不変(LTI)であれば、畳み込みはその質問に対する答えです。
これは、次のような入出力シーケンスにつながります。
畳み込みは非常に論理的で単純なプロセスですが、多くのDSP学習者は、説明の仕方により混乱を招くことがあります。従来の方法と、より直感的な別のアプローチについて説明します。
次に、信号を反転する必要のない、より直感的な方法に移ります。
このような方法を次の図に示します。実装の観点からは、両方の方法に違いはありません。
要約すると、畳み込みは特定の入力に応答してLTIシステムがどのように動作するかを示し、上記の直感的な方法のおかげで、畳み込みは時間領域での乗算でもあると言えます(信号を反転する必要はありません)この時間領域の乗算にはメモリが関係します。フリップがどこから来て、周波数領域で何が起こるかをより深いレベルでさらに理解するために、ここの私の本からサンプルセクションをダウンロードできます。