potong hasil korelasi otomatis di MATLAB

Saya menggunakan xcorr2(A,A) untuk menghitung korelasi otomatis. Namun, keluarannya lebih besar dari A. Bagaimana cara memangkas keluaran untuk menemukan matriks korelasi otomatis yang benar? Misalnya, matriks A saya berukuran 51x51 dan outputnya akan menjadi 101x101. Terlihat jelas bahwa titik pusat mempunyai korelasi maksimum dengan dirinya sendiri yang dalam hal ini terletak pada (26,26), namun pada peta autokorelasi yang baru terletak pada (51,51). Saya memerlukan cara umum untuk memangkas hasil akhir.


person Nicole    schedule 10.09.2012    source sumber


Jawaban (1)


Secara umum, Anda harus mengambil M poin dari M/2 ke 3M/2 di dimensi ke-1, dan N poin dari N/2 ke 3N/2 di dimensi ke-2. > dimensi, dengan asumsi A adalah matriks M-kali-N:

[M, N] = size(A);
cor = xcorr2(A);  %# Shorter form of xcorr(A, A)
C = cor(ceil(M / 2):floor(3 * M / 2), ceil(N / 2):floor(3 * N / 2))

Di sini C akan menjadi keluaran yang dipangkas.

EDIT:
Untuk dua matriks A dan B, hasil dari xcorr2(A, B) akan menjadi (MA+MB-1 )×(NA+NB-1) matriks. Namun di sini, Anda harus memutuskan sendiri bagian mana yang ingin Anda ekstrak, jika matriksnya tidak berdimensi sama. Jika Anda ingin mengekstrak bagian tengah yang penting, Anda dapat melakukannya seperti ini:

[MA, NA] = size(A);
[MB, NB] = size(B);
v = [MA + MB, NA + NB] / 4; %# Just a temporary vector
cor = xcorr2(A, B);
C = cor(ceil(v(1)):floor(3 * v(1)), ceil(v(2)):floor(3 * v(2))
person Eitan T    schedule 11.09.2012
comment
@ Eitan: bagaimana dengan korelasi silang A dan B? Maksudku, apakah A dan B memiliki ukuran yang berbeda? - person Nicole; 11.09.2012