Main Content

xcov

설명

예제

c = xcov(x,y)는 2개의 이산시간 시퀀스의 교차공분산을 반환합니다. 교차공분산은 벡터 x와 벡터 y의 이동된(지연된) 복사본 사이의 유사성을 그 지연 시간의 함수로 측정합니다. xy의 길이가 다르면 이 함수는 더 짧은 벡터의 끝부분에 0을 추가하여 더 긴 벡터와 동일한 길이를 가지도록 합니다.

예제

c = xcov(x)x자기공분산 시퀀스를 반환합니다. x가 행렬이면 c도 행렬이 되며, 반환된 행렬의 열에는 x의 열의 모든 조합에 대한 자기공분산 및 교차공분산 시퀀스가 포함됩니다.

예제

c = xcov(___,maxlag)는 위에 열거된 구문에 대한 지연 범위를 -maxlag에서 maxlag까지로 설정합니다.

예제

c = xcov(___,scaleopt)는 교차공분산 또는 자기공분산에 대한 정규화 옵션도 지정합니다. 'none'(디폴트 값)이 아닌 다른 옵션을 사용하려면 입력값 xy의 길이가 같아야 합니다.

예제

[c,lags] = xcov(___)는 공분산이 계산되는 지연값도 반환합니다.

예제

모두 축소

난수로 구성된 벡터 x와, x를 오른쪽으로 3개 요소만큼 이동한 벡터 y를 만듭니다. xy의 교차공분산 추정값을 계산하고 플로팅합니다. 가장 큰 스파이크는 xy의 요소가 정확히 일치하는 지연값 (-3)에서 발생합니다.

rng default
x = rand(20,1);
y = circshift(x,3);
[c,lags] = xcov(x,y);
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

20×1 확률 벡터를 만든 다음 이 벡터의 자기공분산 추정값을 계산하고 플로팅합니다. 가장 큰 스파이크는 이 벡터가 자신과 정확하게 일치하는 지연 0에서 발생합니다.

rng default
x = rand(20,1);
[c,lags] = xcov(x);
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

-10m10 범위의 백색 가우스 잡음 c(m)에 대해 추정된 자기공분산을 계산하고 플로팅합니다. 지연 0에서 단위 값을 갖도록 시퀀스를 정규화합니다.

rng default
x = randn(1000,1);
maxlag = 10;
[c,lags] = xcov(x,maxlag,'normalized');
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

서로 50개 샘플만큼 순환적으로 이동된 2개의 신호로 이루어진 신호를 만듭니다.

rng default
shft = 50;
s1 = rand(150,1);
s2 = circshift(s1,[shft 0]);
x = [s1 s2];

자기공분산 시퀀스와 상호 교차공분산 시퀀스의 편향 추정값을 계산하고 플로팅합니다. 출력 행렬 cc=(cs1s1cs1s2cs2s1cs2s2)를 충족하는 4개의 열 벡터로 구성됩니다. 순환 이동의 결과로 cs1s2는 -50과 +100에서 최댓값을 갖고 cs2s1은 +50과 -100에서 최댓값을 갖습니다.

[c,lags] = xcov(x,'biased');
plot(lags,c)
legend('c_{s_1s_1}','c_{s_1s_2}','c_{s_2s_1}','c_{s_2s_2}')

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent c_{s_1s_1}, c_{s_1s_2}, c_{s_2s_1}, c_{s_2s_2}.

입력 인수

모두 축소

입력 배열로, 벡터, 행렬, 다차원 배열 중 하나로 지정됩니다. x가 다차원 배열인 경우 xcov는 모든 차원에서 열 방향 연산을 수행하고 각 자기공분산과 교차공분산을 행렬의 열로 반환합니다.

데이터형: single | double
복소수 지원 여부:

입력 배열로, 벡터로 지정됩니다.

데이터형: single | double
복소수 지원 여부:

최대 지연값으로, 정수 스칼라로 지정됩니다. maxlag를 지정할 경우 반환되는 교차공분산 시퀀스의 범위는 -maxlag에서 maxlag까지입니다. 기본적으로, 지연값 범위는 2N – 1과 같습니다. 여기서 N은 입력값 xy 중 더 긴 쪽의 길이입니다.

데이터형: single | double

정규화 옵션으로, 다음 중 하나로 지정됩니다.

  • 'none' — 스케일링되지 않은 원시 교차공분산입니다. 'none'은 입력값 xy의 길이가 다른 경우 유일하게 유효한 옵션입니다.

  • 'biased' — 교차공분산의 편향 추정값입니다.

  • 'unbiased' — 교차공분산의 무편향 추정값입니다.

  • 'normalized' 또는 'coeff' — 지연 0에서 자기공분산이 1이 되도록 시퀀스를 정규화합니다.

출력 인수

모두 축소

교차공분산 또는 자기공분산으로, 벡터 또는 행렬로 반환됩니다.

xM × N 행렬인 경우 xcov(x)x의 열의 자기공분산과 교차공분산을 포함하는 (2M – 1) × N2 행렬을 반환합니다. 최대 지연값 maxlag를 지정할 경우 출력값 c의 크기는 (2 × maxlag + 1) × N2입니다.

예를 들어, S에 3개의 열 S=(x1x2x3)이 있다면 C = xcov(S)의 결과는 다음과 같이 구성됩니다.

c=(cx1x1cx1x2cx1x3cx2x1cx2x2cx2x3cx3x1cx3x2cx3x3).

지연값 인덱스로, 벡터로 반환됩니다.

세부 정보

모두 축소

교차공분산과 자기공분산

xcov는 해당 입력값의 평균을 계산하여 뺀 후 xcorr을 호출합니다.

xcov의 결과는 두 랜덤 시퀀스 간의 공분산 추정값으로 해석되거나 두 결정적 신호 간의 결정론적 공분산으로 해석될 수 있습니다.

두 개의 결합 정상 확률 과정 xn과 yn의 실제 교차공분산 시퀀스는 다음과 같이 평균이 제거된 시퀀스의 상호상관입니다.

ϕxy(m)=E{(xn+mμx)(ynμy))},

여기서 μx와 μy는 두 정상 확률 과정의 평균값입니다. 별표는 켤레 복소수를 나타내고, E는 기대값 연산자입니다. xcov는 실제로 무한 길이 확률 과정의 한 실현에서 유한 부분만 사용 가능하기 때문에 시퀀스만 추정할 수 있습니다.

기본적으로, xcov는 정규화 없이 원시 공분산을 계산합니다.

cxy(m)={n=0Nm1(xn+m1Ni=0N1xi)(yn1Ni=0N1yi),m0,cyx(m),m<0.

출력 벡터 c는 다음으로 지정되는 요소를 가집니다.

c(m)=cxy(mN),m=1,,2N1.

공분산 함수를 올바르게 추정하려면 정규화가 필요합니다. 입력 인수 scaleopt를 사용하여 상관의 정규화를 제어할 수 있습니다.

참고 문헌

[1] Orfanidis, Sophocles J. Optimum Signal Processing: An Introduction. 2nd Edition. New York: McGraw-Hill, 1996.

[2] Larsen, Jan. “Correlation Functions and Power Spectra.” November, 2009. https://www2.imm.dtu.dk/pubdb/edoc/imm4932.pdf

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

참고 항목

| | |