2014-11-20 2 views
1

두 신호 x1과 x2 사이의 상관 관계를 찾고 싶습니다.두 신호의 상호 상관

x1 = [1 1 1 1 1] 
x2 = [1 1 1 1 1] 
r1 = xcorr(x1,x2) //function in matlab to find cross correlation of x1 and x2 

X1과 X2는 모두이 x1 or x2

과 교차 상관처럼 내가 그 상관 관계가 가장 높은 값을주고, 두 신호 사이의 유사성의 정도를 측정하는 이해이 r1

처럼 최대 유사성에 해당하는 점 (두 신호는 서로 다른 점에서 유사성을 측정하기 위해 서로 상대적으로 시프트 됨?). 따라서이 경우 교차 상관 관계는 모든 지점에서 높은 가치를 제공해야하지만 그렇지 않습니다. 최대 값은 5 위입니다. 왜 그런가요? 누군가 나에게 이것을 설명 할 수 있습니까?

답변

7

상호 상관이 작동하는 방식에 대해 약간의 오해가있는 것 같습니다. 상호 상관은 하나의 신호를 취하여 과 다른 신호의 버전을 비교합니다.

http://www-rohan.sdsu.edu/~jiracek/DAGSAW/images/eq4_6_7.gif

sh 두 개의 신호입니다 : 당신이 기억하는 경우, 두 신호의 (표준화) 간 상관 관계는 다음과 같이 정의된다. 따라서 두 번째 신호 인 h의 버전을 이동하여 요소 곱으로 요소를 가져 와서 모두 합칩니다. 상호 상관 플롯의 수평축은 시프트을 나타내고, 수직축은 각 시프트에서 상호 상관의 출력을 나타낸다. MATLAB이 제공하는 출력을 더 잘 이해할 수 있도록 신호에 대해 상호 상관을 직접 계산해 봅시다.

출력을 계산하려면 두 신호가 겹쳐지기 시작한 첫 번째 지점을 수용하기 위해 두 신호를 모두 제로 패딩해야합니다. 구체적으로, 상호 상관 계산을 용이하게하기 위해 s의 왼쪽에 N2-1의 제로가 있고 s의 오른쪽에있는의 제로가되도록 제로 패드가 필요합니다. 이 경우 N2은 길이가 h입니다. 신호 h의 시프트가있을 때 상호 상관을 계산할 때마다 s의 제로 패딩 버전과 동일한 크기의 모든 제로 신호를 작성한 다음 원본 신호 h을이 더 큰 신호 내에 배치하십시오. 이 새로운 신호를 사용하여 제로 패딩 된 버전 s과 비교하십시오.

실제로 상호 상관 관계의 속성은 교환 가능하다는 것입니다. 한 신호가 더 길고 신호가 더 짧으면 짧은 신호를 쉬프트하는 동안 긴 신호를 고정 된 상태로 두는 것이 더 쉬울 것입니다. 어느 쪽을 선택하든 상관없이 동일한 결과를 얻을 수 있지만 항상 쉬운 경로를 선택해야합니다.

이전으로 돌아 가면 교차 상관 관계의 첫 번째 값은 다음과 같습니다 (shift = 1).

s = [0 0 0 0 1 1 1 1 1 0 0 0 0] 
h = [1 1 1 1 1 0 0 0 0 0 0 0 0] 

좌, 우리는 h의 우단 s 인 제 1 신호를, 중첩 시작되는 시작에서 상기 제 2 신호 슬라이드. sh 사이의 포인트 단위 곱셈을 수행하고 요소를 요약합니다.이 경우, 우리는 얻을 :이 경우

s ** h = (0)(1) + (0)(1) + (0)(1) + (0)(1) + (1)(1) + (0)(1) + (0)(1) + (0)(1) + (0)(1) 
     = 1 

**은 (내 버전) 간 상관 관계 연산자. 이제 shift = 2 살펴 보자 :

s = [0 0 0 0 1 1 1 1 1 0 0 0 0] 
h = [0 1 1 1 1 1 0 0 0 0 0 0 0] 

는 기억, 우리는 더 많은 1 s에서 오른쪽으로 이동하는 것은 동일하게 유지됩니다. 위와 같은 계산을 수행, 우리가 가야 : 당신이 다른 변화에 대해이 작업을 반복하는 경우, 당신은 우리가 다섯 번째 인, 총 중첩이 최대까지 값이 1 씩 증가하는 유지 것을 볼 수 있습니다

s ** h = (0)(1) + (0)(1) + (0)(1) + (0)(1) + (1)(1) + (1)(1) + (0)(1) + (0)(1) + (0)(1) 
     = 2 

교대 (shift = 5). 이 경우, 우리는 얻을 : 당신이 상호 상관을 계산하면

s = [0 0 0 0 1 1 1 1 1 0 0 0 0] 
h = [0 0 0 0 1 1 1 1 1 0 0 0 0] 

, 우리는 이제 5를 얻을, 우리는 여섯 번째 변화 (shift = 6)을 계산할 때, 우리는 1 씩 오른쪽으로 이동하고, 그 때의 교차 상관 관계가 떨어지기 시작합니다. 특히 : 당신이 계속 진행하여 상호 상관을 계산하면

s = [0 0 0 0 1 1 1 1 1 0 0 0 0] 
h = [0 0 0 0 0 1 1 1 1 1 0 0 0] 

, 당신은 결과가 당신이 오른쪽으로 이동 유지 4. 것을 볼 수 있습니다, 당신은 값이 1 개 당에 의해 감소 ​​유지하는 것을 볼 수 있습니다 우리가 취하는 변화.

s = [0 0 0 0 1 1 1 1 1 0 0 0 0] 
h = [0 0 0 0 0 0 0 0 1 1 1 1 1] 

간 상관 관계를 계산하여, 우리는 1의 값이 또한 볼 수 : 여기 모두 sh 중복, 단 하나의 지점이 어디 있는지 최종 지점에 도착 이것은 shift = 9에 있습니다. 따라서 교차 분석이 증가하기 시작하는 그래프는 중복되는 양이 증가하기 때문에 설명됩니다. 두 신호의 총 겹침이 있기 때문에 최대 값은 shift = 5입니다. 중첩 량이 또한 감소하기 시작하기 때문에 상호 상관은 감소하기 시작합니다.

또한 우리가 계산해야하는 총 교대 횟수는 N1 + N2 - 1이며 상호 상관 특성입니다. N1N2은 길이가 각각 sh입니다. 따라서 N1 = N2 = 5이 주어지면 전체 시프트 수는 N1 + N2 - 1 = 9이며 위에 계산 한 마지막 시프트와 일치합니다.


희망이 있습니다.

+0

당신은 제로 패딩을 언급했습니다. 그래서 N1 + N2-1 = 9이다. 이는 s = [1 1 1 1 0 0 0 0 0 0 0 0]과 h = [1 1 1 1 0 0 0 0 0 0 0 0]을 의미한다. 이동은 한 위치에서 수행됩니다. 그래서 shift = 1은 s = [0 1 1 1 1 0 0 0 0 0 0 0]이어야하고 h = [1 1 1 1 0 0 0 0 0 0 0 0]? – Clive

+0

@Clive - 마지막으로 확인한 이후로 내 소식을 수정했습니다. 제로 패딩 문장에서 나는 정확하지 않았습니다. 나는 그것을 바꿨다. 그래서 나의 편집을 보라. 필요한 경우 페이지를 새로 고칩니다. – rayryeng

+0

왜 shift = 1 일 때 s = [0 0 0 0 1 1 1 1 0 0 0 0]입니까? – Clive