MATLAB中的修剪自相关结果

MATLAB中的修剪自相关结果,matlab,correlation,Matlab,Correlation,我使用xcorr2(A,A)来计算自相关。但是,输出大于A。我应该如何调整输出以找到正确的自相关矩阵?例如,我的A矩阵为51x51,输出为101x101。很明显,中心点与自身的相关性最大,在本例中位于(26,26),但在新的自相关图中,它位于(51,51)。我需要一个通用的方法来调整最终输出 一般来说,假设A是一个M-by-N矩阵,则必须在第一维中从M/2到3M/2取M点,在第二维中从N/2到3N/2取N点: [M, N] = size(A); cor = xcorr2(A); %# Shor

我使用xcorr2(A,A)来计算自相关。但是,输出大于A。我应该如何调整输出以找到正确的自相关矩阵?例如,我的A矩阵为51x51,输出为101x101。很明显,中心点与自身的相关性最大,在本例中位于(26,26),但在新的自相关图中,它位于(51,51)。我需要一个通用的方法来调整最终输出

一般来说,假设A是一个M-by-N矩阵,则必须在第一维中从M/2到3M/2取M点,在第二维中从N/2到3N/2取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))
这里
C
将是经过修剪的输出

编辑:
对于任何两个矩阵
A
B
xcorr2(A,B)
的结果将是A(MA+MB-1)×(NA+NB-1)矩阵。然而,在这里,如果矩阵的维数不相等,您必须自己决定要提取哪个部分。如果要提取重要的中心部分,可以这样做:

[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))

@艾坦:A和B的互相关如何?我是说,如果a和B有不同的尺寸?