Numpy: korelasi silang yang dinormalisasi (Trac #1714)

Dibuat pada 20 Okt 2012  ·  12Komentar  ·  Sumber: numpy/numpy

_Tiket asli http://projects.scipy.org/numpy/ticket/1714 pada 2011-01-15 oleh pengguna trac bubla, ditetapkan untuk tidak diketahui._

Halo,
Saya telah membuat tambalan yang memperluas fungsi correlate sehingga dapat menghitung korelasi silang yang dinormalisasi sekarang
Lihat [ http://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross -correlation artikel Wikipedia].

Saya telah menambahkan dokumentasi dan doctest sederhana juga, tentu saja.
Patch ini bertentangan dengan master terbaru Git

01 - Enhancement Patch numpy.core

Komentar yang paling membantu

Ada jawaban di SO yang menunjuk ke sini: https://stackoverflow.com/a/5639626/5392420

Ini juga memiliki kode yang paling relevan disertakan. Karena lampiran di atas tidak lagi tersedia (setidaknya bagi saya), saya pikir akan sangat membantu jika ini sebagai awal implementasi.

Saya juga dapat mengonfirmasi bahwa - setidaknya dalam kasus saya - ini berfungsi untuk "menormalkan" vektor input sebelum menggunakan np.correlate seperti ini dan nilai yang masuk akal akan dikembalikan dalam kisaran [-1,1]:

a = (a - np.mean(a)) / (np.std(a) * len(a))
b = (b - np.mean(b)) / (np.std(b))
c = np.correlate(a, b, 'full')

Semua 12 komentar

Lampiran ditambahkan oleh bubla pengguna trac pada 15-01-2011: korelasi.parch

_@rgommers menulis pada

Karena ini adalah fungsi baru, Anda harus bertanya pada milis apakah ini dapat disertakan.

Tes unit diperlukan, doctests tidak dijalankan secara default di test suite.

Ini bisa berguna.

Dapatkah seseorang memverifikasi apakah ini benar?

Saya bertanya-tanya tentang apa yang benar dalam kombinasi dengan mode='full' .

Saya kebetulan membutuhkan fitur ini, tetapi saya tidak yakin itu benar kecuali ketika mode='valid' DAN kedua array berukuran sama. Dengan kata lain, saya pikir normalisasi harus diterapkan pada setiap jendela.

ada pembaruan tentang masalah ini?
Apakah tambalan telah diuji untuk semua mode berkorelasi?

@VlamV , karena tidak ada apa-apa di sini, tidak, saya tidak percaya begitu. Jika Anda punya waktu untuk memperbaikinya untuk mode lain, saya pikir kami bisa menambahkannya.

Ada berita tentang ini?

bukankah lebih masuk akal untuk membagi dengan standar deviasi dari bagian a yang sebenarnya digunakan (dalam kasus mode=same atau mode=full )

juga apakah tidak masuk akal untuk menggunakan opsi bias dan ddof dari numpy.corrcoef daripada hanya membagi dengan len(a)

Ada jawaban di SO yang menunjuk ke sini: https://stackoverflow.com/a/5639626/5392420

Ini juga memiliki kode yang paling relevan disertakan. Karena lampiran di atas tidak lagi tersedia (setidaknya bagi saya), saya pikir akan sangat membantu jika ini sebagai awal implementasi.

Saya juga dapat mengonfirmasi bahwa - setidaknya dalam kasus saya - ini berfungsi untuk "menormalkan" vektor input sebelum menggunakan np.correlate seperti ini dan nilai yang masuk akal akan dikembalikan dalam kisaran [-1,1]:

a = (a - np.mean(a)) / (np.std(a) * len(a))
b = (b - np.mean(b)) / (np.std(b))
c = np.correlate(a, b, 'full')

Normalisasi dengan porsi sinyal a yang benar-benar digunakan (lihat komentar @wilberth ) diimplementasikan dengan metode numpy dalam fungsi korelasi_template di repositori ini: https://github.com/trichter/xcorr

Apakah halaman ini membantu?
0 / 5 - 0 peringkat