示例#1
0
 def test_xcorr_obspy(self):
     N = 1001
     data1 = np.sin(np.arange(N) / 100.)
     data2 = np.e ** (-(np.arange(N) - 500) ** 2 / 100.) - np.e ** (-(np.arange(N) - 50) ** 2 / 100.) + 5 * np.e ** (-(np.arange(N) - 950) ** 2 / 100.)
     data1[:] = data1[:] - np.mean(data1)
     data2[:] = data2[:] - np.mean(data2)
     cor1 = correlate(data1, data2, 'same')
     cor2 = xcorr_obspy(data1, data2, N // 2)
     #cor3 = xcorr_obspy(data1, data1, N)
     cor1 *= max(cor2) / max(cor1)
示例#2
0
 def test_xcorr_obspy(self):
     N = 1001
     data1 = np.sin(np.arange(N) / 100.)
     data2 = np.e**(-(np.arange(N) - 500)**2 / 100.) - np.e**(
         -(np.arange(N) - 50)**2 /
         100.) + 5 * np.e**(-(np.arange(N) - 950)**2 / 100.)
     data1[:] = data1[:] - np.mean(data1)
     data2[:] = data2[:] - np.mean(data2)
     cor1 = correlate(data1, data2, 'same')
     cor2 = xcorr_obspy(data1, data2, N // 2)
     #cor3 = xcorr_obspy(data1, data1, N)
     cor1 *= max(cor2) / max(cor1)
示例#3
0
    def test_xcorr_all_again(self):
        seed(42)
        data1 = random(1200) * np.sin(np.arange(1200)) * np.arange(1200) - 0.5
        data2 = random(1000) * np.sin(np.arange(1000) * 0.4) * 500 - 0.5
        data1 -= np.mean(data1[100:1100])
        data2 -= np.mean(data2)
        data2_pad = np.hstack((np.zeros(100), data2, np.zeros(100)))
        cor1a = correlate(data1, data2, 'valid')
        cor1a2 = xcorr_obspy(data1, data2_pad, 100)
        cor1b = xcorrt(data1, data2, 100)
        cor1c = xcorrf(data1, data2, 100)
        cor1a *= max(cor1b) / max(cor1a)
        cor1a2 *= max(cor1b) / max(cor1a2)
        cor3 = xcorrf(data2, data1, 100)[::-1] #@UnusedVariable
        cor4 = xcorrt(data1, data2, 100, demean=False, normalize=False)
        cor5 = xcorrf(data1, data2, 100, demean=False, normalize=False)
        val = max (cor4)
        cor4 /= val
        cor5 /= val
        cor6 = xcorrt(data1, data2, 100, shift_zero=100)
        cor7 = xcorrf(data1, data2, 100, shift_zero=100)
        cor8 = xcorrt(data1, data2, 500, window=200)
        cor9 = xcorrf(data1, data2, 500, window=200)

#        from pylab import plot, show, subplot, legend
#        subplot(411)
#        plot(data1)
#        plot(data2)
#        subplot(412)
#        plot(cor1a, label='convolve')
#        plot(cor1b, label='xcorrt')
#        plot(cor1c, label='xcorrf')
#        plot(cor1a2, label='xcorr_obspy')
#        plot(cor6, label='xcorrt shift')
#        plot(cor7, label='xcorrf shift')
#        legend()
#        subplot(413)
#        plot(cor4, label='xcorrt all not demeaned not normalized')
#        plot(cor5, label='xcorrf')
#        legend()
#        subplot(414)
#        plot(cor8, label='xcorrt window')
#        plot(cor9, label='xcorrf window')
#        legend()
#        show()
        np.testing.assert_array_almost_equal(cor1a, cor1b)
        np.testing.assert_array_almost_equal(cor1a, cor1a2)
        np.testing.assert_array_almost_equal(cor1b, cor1c)
        np.testing.assert_array_almost_equal(cor1c[20:30], cor7[120:130])
        np.testing.assert_array_almost_equal(cor4, cor5)
        np.testing.assert_array_almost_equal(cor6, cor7)
        np.testing.assert_array_almost_equal(cor8, cor9)
示例#4
0
    def test_xcorr_all_again(self):
        seed(42)
        data1 = random(1200) * np.sin(np.arange(1200)) * np.arange(1200) - 0.5
        data2 = random(1000) * np.sin(np.arange(1000) * 0.4) * 500 - 0.5
        data1 -= np.mean(data1[100:1100])
        data2 -= np.mean(data2)
        data2_pad = np.hstack((np.zeros(100), data2, np.zeros(100)))
        cor1a = correlate(data1, data2, 'valid')
        cor1a2 = xcorr_obspy(data1, data2_pad, 100)
        cor1b = xcorrt(data1, data2, 100)
        cor1c = xcorrf(data1, data2, 100)
        cor1a *= max(cor1b) / max(cor1a)
        cor1a2 *= max(cor1b) / max(cor1a2)
        cor3 = xcorrf(data2, data1, 100)[::-1]  #@UnusedVariable
        cor4 = xcorrt(data1, data2, 100, demean=False, normalize=False)
        cor5 = xcorrf(data1, data2, 100, demean=False, normalize=False)
        val = max(cor4)
        cor4 /= val
        cor5 /= val
        cor6 = xcorrt(data1, data2, 100, shift_zero=100)
        cor7 = xcorrf(data1, data2, 100, shift_zero=100)
        cor8 = xcorrt(data1, data2, 500, window=200)
        cor9 = xcorrf(data1, data2, 500, window=200)

        #        from pylab import plot, show, subplot, legend
        #        subplot(411)
        #        plot(data1)
        #        plot(data2)
        #        subplot(412)
        #        plot(cor1a, label='convolve')
        #        plot(cor1b, label='xcorrt')
        #        plot(cor1c, label='xcorrf')
        #        plot(cor1a2, label='xcorr_obspy')
        #        plot(cor6, label='xcorrt shift')
        #        plot(cor7, label='xcorrf shift')
        #        legend()
        #        subplot(413)
        #        plot(cor4, label='xcorrt all not demeaned not normalized')
        #        plot(cor5, label='xcorrf')
        #        legend()
        #        subplot(414)
        #        plot(cor8, label='xcorrt window')
        #        plot(cor9, label='xcorrf window')
        #        legend()
        #        show()
        np.testing.assert_array_almost_equal(cor1a, cor1b)
        np.testing.assert_array_almost_equal(cor1a, cor1a2)
        np.testing.assert_array_almost_equal(cor1b, cor1c)
        np.testing.assert_array_almost_equal(cor1c[20:30], cor7[120:130])
        np.testing.assert_array_almost_equal(cor4, cor5)
        np.testing.assert_array_almost_equal(cor6, cor7)
        np.testing.assert_array_almost_equal(cor8, cor9)