自己相関の計算に xcorr2(A,A) を使用しています。しかし、出力は A よりも大きいです。正しい自己相関行列を見つけるには、出力をどのようにトリミングすればよいですか? たとえば、私の A マトリックスは 51x51 で、出力は 101x101 になります。中心点は、この場合 (26,26) に位置するそれ自体と最大の相関を持つことは明らかですが、新しい自己相関マップでは (51,51) に位置します。最終出力をトリミングする一般的な方法が必要です。
1 に答える
2
一般に、A が M 行 N 列の行列であると仮定すると、1 番目の次元でM /2 から 3M/2 までの M ポイント、2番目の次元で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
された出力です。
編集:
任意の 2 つの行列A
とB
の場合、 の結果はxcorr2(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))
于 2012-09-11T00:23:56.860 に答える