在MATLAB中修剪自相关结果

时间:2012-09-10 23:58:38

标签: matlab correlation

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

1 个答案:

答案 0 :(得分:2)

一般来说,你必须在1 st 维度中从M / 2到3M / 2取M点,在2 nd中取N点从N / 2到3N / 2 维度,假设A是M-by-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将是修剪后的输出。

修改
对于任何两个矩阵ABxcorr2(A, B)的结果将是(M A + M B -1) ×(N A + N B -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))