이 페이지의 내용은 이전 릴리스에 관한 것입니다. 해당 영문 페이지는 최신 릴리스에서 제거되었습니다.

xcov

구문

c = xcov(x,y)
c = xcov(x)
c = xcov(___,maxlag)
c = xcov(___,scaleopt)
[c,lags] = xcov(___)

설명

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

예제

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

예제

c = xcov(___,maxlag)는 지연 범위를 –maxlag에서 maxlag까지로 제한합니다. 이 구문은 하나 또는 두 개의 입력 시퀀스를 받습니다. maxlag는 기본적으로 N – 1로 설정됩니다.

예제

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

[c,lags] = xcov(___)는 공분산이 계산되는 지연으로 구성된 벡터도 출력합니다.

예제

모두 축소

균일 난수열 과 50개 샘플로 순환적으로 이동된 의 복사본인 로 구성된 2채널 150개 샘플을 갖는 신호 를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 시퀀스를 플로팅합니다.

rng default
shft = 50;

s1 = rand(150,1);
s2 = circshift(s1,[shft 0]);
s = [s1 s2];

subplot(2,1,1)
plot(s1)
title('s_1')
subplot(2,1,2)
plot(s2)
title('s_2')
hold on
plot([shft shft],[0 1])

자기공분산 시퀀스와 상호 교차공분산 시퀀스의 편향 추정값을 계산합니다. 출력 배열은 로 구성됩니다. 결과를 플로팅합니다. 에서의 최댓값이 원형 이동을 수행한 결과입니다.

[c,lg] = xcov(s,'biased');

figure
plot(lg,c)
legend('c_{s_1s_1}','c_{s_1s_2}','c_{s_2s_1}','c_{s_2s_2}')

자기공분산 시퀀스가 영차 지연에서 단위 값을 갖도록 정규화를 변경합니다. 각 시퀀스를 고유한 서브플롯에 플로팅합니다.

[c,lg] = xcov(s,'coeff');

for a = 1:2
    for b = 1:2
        nm = 2*(a-1)+b;
        subplot(2,2,nm)
        plot(lg,c(:,nm))
        title(sprintf('c_{s_%ds_%d}',a,b))
        axis([-150 150 -0.2 1])
    end
end

범위의 백색 가우스 잡음 에 대해 추정된 자기공분산을 표시합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 영차 지연에서 단위 값을 갖도록 시퀀스를 정규화합니다.

rng default

ww = randn(1000,1);
[cov_ww,lags] = xcov(ww,10,'coeff');

stem(lags,cov_ww)

이 예제를 수행하려면 Parallel Computing Toolbox™가 필요합니다. 지원되는 GPU를 보려면 GPU Support by Release (Parallel Computing Toolbox) 항목을 참조하십시오.

1kHz로 샘플링되고 10Hz 사인파로 구성된 잡음 있는 신호를 생성합니다. gpuArray를 사용하여 컴퓨터의 GPU에 저장되는 gpuArray 객체를 생성합니다.

t = 0:0.001:10-0.001;
x = cos(2*pi*10*t) + randn(size(t));
X = gpuArray(x);

지연값 200까지 자기공분산 시퀀스를 구합니다. 출력값 xcgpuArray 객체입니다.

[xc,lags] = xcov(X,200);

데이터를 gather를 사용하여 GPU에서 MATLAB® 작업 공간으로 배정밀도 벡터 형식으로 전달합니다.

xc = gather(xc);

입력 인수

모두 축소

입력 배열로, 벡터, 행렬 또는 gpuArray 객체로 지정됩니다.

gpuArray 객체에 xcov을 사용하는 방법에 대한 자세한 내용은 Run MATLAB Functions on a GPU (Parallel Computing Toolbox) 항목 및 GPU Support by Release (Parallel Computing Toolbox) 항목을 참조하십시오.

예: sin(2*pi*(0:9)/10) + randn([1 10])/10은 잡음이 있는 정현파를 행 벡터로 지정합니다.

예: sin(2*pi*[0.1;0.3]*(0:39))' + randn([40 2])/10은 잡음이 있는 2채널 정현파를 지정합니다.

예: gpuArray(sin(2*pi*(0:9)/10) + randn([1 10])/10)은 잡음이 있는 정현파를 gpuArray 객체로 지정합니다.

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

입력 배열로, 벡터나 gpuArray 객체로 지정됩니다.

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

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

데이터형: single | double

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

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

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

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

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

출력 인수

모두 축소

교차공분산 시퀀스 또는 자기공분산 시퀀스로, 벡터, 행렬 또는 gpuArray 객체로 반환됩니다.

x가 열에서 N개 채널을 나타내는 M × 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는 입력 인수 개수가 올바른지 외에는 다른 오류는 확인하지 않습니다. 대신, 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. http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/4932/pdf/imm4932.pdf

확장 기능

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

R2006a 이전에 개발됨