周波数領域で畳み込みカーネルを見つける方法は?


12

空間データの2つのベクトル(それぞれ約2000要素の長さ)があります。1つは他の畳み込みバージョンです。このような畳み込みを生成するカーネルを決定しようとしています。出力ベクトルと入力ベクトルのフーリエ変換の比の逆フーリエ変換を見つけることでこれができることを知っています。実際、これを行うと、私が期待していた形になります。ただし、実際には畳み込みがポイントの約5分の1(約300〜400)しか使用していない場合、私のカーネルベクトルは2つの入力ベクトルと同じ次元を持ちます。正しい形状を取得しているが、ポイントの数が間違っているという事実から、ifftおよびfft関数をまったく正しく使用していないと思うようになります。私が本当に正しいことをしていれば、これは自然に起こるはずです。現時点では、私は単にやっています。

FTInput = fft(in); 
FtOutput = fft(out);
kernel = ifft(FtOutput./FTInput).

これは正しいですか、出力ベクトルを正しく解釈するのは私次第ですか、それともタスクを単純化しすぎましたか?私はそれが後者だと確信しています、私はただどこにあるのか分かりません。


2
入力データの両側に畳み込みカーネルの長さまでゼロが埋め込まれていますか?そうでなければ、そこの情報を失うことになり、これがこれらのアーティファクトの原因である可能性があります。
leftaroundabout

回答:


5

信号にノイズが含まれている場合、単純なフーリエ領域分割により、結果に多くのエラーが発生します。これを回避するいくつかの方法は、いわゆるデュアルチャネルFFT(パート1およびパート2)を使用することです。また、適応フィルター、LMSまたはNLMS([正規化]最小平均二乗)フィルターを介したデコンボリューションを提案することもできます。LMS適応フィルターは、ノイズに対して非常に堅牢です。


それは大歓迎でしたが、存在しているとは知らなかったまったく新しいタイプのものを発見しました。
ボウラー

@フォノンはそれらのリンクが機能していますか?これはまさにサインアップとは何ですか?
スペイシー

@Mohammad:Brüel&Kjærのテクニカルレビューの記事や書籍にアクセスするためのものです。サインアップは無料で、多くの優れた記事にアクセスできます。
トール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.