2016-05-13 16 views
0

2つの有限シーケンスx(i)およびy(i)、i = 1 ... nが与えられたとき。2つの離散フーリエ変換のコサイン

import numpy as np 
x = np.array([1,2,3]) 
y = np.array([0.1, 1, 0.5]) 

Dftxy = np.fft.fft(x*y) # DFT(x.y) 

Dftx = np.fft.fft(x) 
Dfty = np.fft.fft(y) 
CDftxy = np.convolve(Dftx,Dfty,'same')/3 # (DFT(x)*DFT(y))/n 

:今

DFT(x.y) = (DFT(x) * DFT(y))/n 

私はPythonで、この単純なコードをテスト:私は点状製品XYの離散フーリエ変換(DFT)がDFT両者のxとyの畳み込みに等しいことが知られ結果は次のとおりです。

Dftxy = [3.60+0.j, -1.65-0.4330127j, -1.65+0.4330127j] 
CDftxy = [-2.10-0.40414519j, -1.65+0.4330127j, 0.40+0.j] 

DftxyとCDftxyの値は異なります。私のコードにエラーはありますか?あなたはそれをバック変換する必要が

+0

Mohammed Liさんに感謝します。私はnumpyを使用してPythonでテストしようとしましたが、結果は正しくありません。コードは私の変更された質問で示されています。 – phan

+0

帽子を避けましょう、それは叫ぶと考えられ、あまり親切ではありません。私はdownvotesを取得しません。 y'allがとてもスマートな場合、動作する例を示してください。 – roadrunner66

答えて

0

recovered_vector = np.fft.ifft(CDftxy) 

しかし、ええ、周期的境界条件を..あなたはあなたの場合は、ゼロパッドあなたのFFTにあなたが持っている3つの員ベクトル

1

のための合理的な何も表示されません高速畳み込み結果で線形畳み込み結果を生成したいそれ以外の場合は、ゼロパッドを使用しないと、2つのFFTの要素ごとの乗算から循環畳み込み(最終畳み込み結果がラップアラウンドとフロントで合計)されます。

関連する問題