私は2D相関を計算する必要がある2D配列のセットを持っています。私は多くの異なることを試しています(Fortranでプログラミングしていても)。しかし、最も速い方法はFFTを使って計算することです。私のテストで、私はscipy.signal.fftconvolve
を使用することができますし、私はboundary='fill'
でscipy.signal.correlate2d
の出力を再現しようとしている場合、それは正常に動作しthis answerに基づいてfftconvolveで二次元相関をラップした計算
。したがって、基本的にこの
scipy.signal.fftconvolve(a, a[::-1, ::-1], mode='same')
は、それらが2次元周期配列(あるので事は、アレイは、ラップされたモードで計算されなければならないということである
scipy.signal.correlate2d(a, a, boundary='fill', mode='same')
(わずかなシフトを除いて)これに等しいです。すなわち、boundary='wrap'
)。私は私がすることはできません
scipy.signal.correlate2d(a, a, boundary='wrap', mode='same')
の出力を再現しようとしているのであれば、または少なくとも私はそれを行う方法が表示されません。
明らかにScipyは、このトリックをした可能性があるsomething like thatを持っていたようですが、明らかに残ってしまって見つけられないので、私は思っています。(私はFFT方法を使います。 Scipyはそれをサポートしなくなったかもしれない。
とにかく、scipy
やnumpy
のFFTルーチンを使用してこの周期配列の相関を計算する方法はありますか?
「a」の外観はどうですか? – kmario23
@ kmario23それは私的な実験データなので、私はここで実際に共有することはできません。しかし、それはxとyで周期的な200x200配列です。 – TomCho
私は現時点では良い答えがありませんが、あなたが言及した "残された"コードは[ここ](https://github.com/scipy/scipy/blob/maintenance/0.7)にあります。x/scipy/stsci/convolve/lib/Convolve.py#L144) – jakevdp