Main Content

상관과 공분산

배경 정보

두 개의 광의의 정상 확률 과정 x(n)y(n)에 대한 상호상관 시퀀스는 다음과 같습니다.

Rxy(m)=E{x(n+m)y*(n)},

여기서 별표는 켤레 복소수를 나타내고 기대값은 확률 과정을 구성하는 구현의 앙상블을 대상으로 합니다.

참고로, 상호상관은 가환적이지 않지만 에르미트(켤레) 대칭 속성은 다음과 같이 성립합니다.

Rxy(m)=Ryx*(m).

x(n)y(n) 사이의 교차공분산은 다음과 같습니다.

Cxy(m)=E{(x(n+m)μx)(y(n)μy)*}=Rxy(m)μxμy*.

평균이 0인 광의의 정상 확률 과정에서 상호상관과 교차공분산은 동일합니다.

실제로는 무한 길이의 확률 과정 중 유한 부분에만 액세스할 수 있으므로 이러한 시퀀스를 추정해야 합니다. 또한, 확률 과정의 단일 구현만 사용할 수 있으므로 시간 평균에 따라 앙상블 모멘트를 추정해야 하는 경우도 종종 있습니다. x(n)y(n)의 N개 샘플을 기반으로 하는 공통 추정값은 결정적 상호상관 시퀀스(시간-모호성 함수라고도 함)입니다.

R^xy(m)={n=0Nm1x(n+m)y*(n),m0,R^yx*(m),m<0.

여기서는 설명을 위해 x(n)y(n)이 0에서 N -1까지 인덱스가 지정되어 있고 R^xy(m)은 –(N – 1)에서 N – 1까지 인덱스가 지정되어 있다고 가정합니다.

xcorr 함수와 xcov 함수 사용하기

xcorr 함수와 xcov 함수는 확률 과정에 대해 상호상관 시퀀스와 교차공분산 시퀀스를 추정합니다. 또한, 특수한 사례로 자기상관 및 자기공분산을 처리합니다. xcorr 함수는 위에서 길이가 N인 벡터 xy에 저장된 입력값 x(n)y(n)이 주어졌을 때 효율적인 FFT 기반 알고리즘으로 위에 표시된 합계를 계산합니다. 이 함수의 연산은 두 부분 시퀀스 중 하나를 시간 역순으로 뒤집은 상태의 컨벌루션과 동일합니다.

예를 들면 다음과 같습니다.

x = [1 1 1 1 1]';
y = x;
xyc = xcorr(x,y)

결과 시퀀스의 길이는 입력 시퀀스 길이의 두 배보다 하나가 작다는 것을 알 수 있습니다. 따라서 N번째 요소는 지연값 0에서의 상관입니다. 또한, 두 개의 사각 펄스를 컨벌루션하면 그 결과로 출력값의 삼각 펄스가 발생하는 것을 알 수 있습니다.

xcov 함수는 자기공분산 시퀀스와 교차공분산 시퀀스를 추정합니다. 이 함수는 xcorr과 동일한 옵션을 가지며 동일한 합계를 계산하지만, 먼저 xy의 평균을 제거합니다.

편향 및 정규화

수량의 기대값이 추정한 수량과 같지 않으면 수량 추정값은 편향된 것입니다. xcorr의 출력 기대값은 다음과 같습니다.

E{R^xy(m)}=(N|m|)Rxy(m).

입력 시퀀스 다음에 'unbiased' 플래그를 지정하면 xcorr은 값을 N – |m|으로 나눈 무편향 추정값을 제공합니다.

xcorr(x,y,'unbiased')

이 추정값은 편향되지 않지만, xcorr이 몇 개의 데이터 점만 사용해서 값을 계산하므로 끝점(–(N – 1) 및 N – 1 근처)에서 큰 분산이 발생합니다. 이 문제를 절충하는 방법은 'biased' 플래그를 사용하여 단순히 N으로 나누는 것입니다.

xcorr(x,y,'biased')

이 방식을 사용하면 지연값 0에서의 상관 샘플(N번째 출력 요소)만 편향되지 않습니다. 이 추정값은 상관 시퀀스의 끝점에서 무작위로 큰 편차가 발생하는 것을 방지해 주므로 무편향 추정값보다 더 바람직할 때가 많습니다.

xcorr은 정규화 방식을 한 가지 더 제공합니다. 구문은 다음과 같습니다.

xcorr(x,y,'coeff')

이 구문은 자기상관의 경우 지연값 0에서의 샘플이 1이 되도록 출력값을 norm(x)*norm(y)로 나눕니다.

다중채널

다중채널 신호인 경우 xcorrxcov는 모든 채널에 대해 자기상관 시퀀스, 상호상관 시퀀스, 공분산 시퀀스를 동시에 추정합니다. S가 열에 N개의 채널을 표현하는 M×N 신호 행렬인 경우, xcorr(S)는 N2개 열에 S의 채널의 자기상관 및 상호상관이 있는 (2M – 1)×N2 행렬을 반환합니다. S가 다음과 같은 3채널 신호라면

S = [s1 s2 s3]

xcorr(S)의 결과는 다음과 같이 구성됩니다.

R = [Rs1s1 Rs1s2 Rs1s3 Rs2s1 Rs2s2 Rs2s3 Rs3s1 Rs3s2 Rs3s3]

관련된 두 함수 covcorrcoef는 표준 MATLAB® 환경에서 사용할 수 있습니다. 이러한 함수는 지연값 0에서 서로 다른 채널 사이의 공분산과 정규화된 공분산을 각각 추정하고 이를 정사각 행렬에 배열합니다.