2017-04-06 29 views
0

두 개의 서로 다른 신호를 나타내는 두 개의 벡터가 있습니다. 각 신호는 동일한 주파수의 사인파입니다. 상호 상관, 푸리에 변환, 힐버트 변환 등을 시도했지만 특정 주파수에서 올바른 (이론적 인) 값 (라디안)을 반환하지 않습니다 (음수이어야 함). 동일한 주파수를 가진 두 개의 사인파의 위상차를 계산할 수있는 MATLAB의 방법이 있습니까?동일한 주파수를 가진 두 사인파 간의 위상차

참고 : 두 신호의 주파수 및 진폭에 대한 액세스 권한이 있으며 필요한 경우 일부 코드를 게시 할 수 있습니다. s1s2 가정

+0

이러한 모든 방법은 상황/구현에 따라 그럴듯합니다. 구체적으로 무엇을 시도 했습니까? 어떤 결과를 얻었습니까? 그리고 어떤 결과를 기대 했습니까? –

+0

@OliverCharlesworth 위상 차이를 계산하기 위해'xcorr' (상호 상관),'fft' 함수 및'hilbert' 함수를 사용하여 시도했지만 이론적 인 값과 일치하지 않습니다. 동일한 주파수. 나는 내가받은 것보다 적은 가치 (더 부정적)를 기대했다. 저주파에서는 '힐버트 (hilbert)'변환이 가장 가까웠지만 어떤 이유로 더 높은 주파수 (300+ Hz)에서 제트를 벗어납니다. –

+0

'xcorr'과'fft'가 확실히 작동해야하기 때문에 샘플 데이터를 포함하여 최소한의 실행 가능한 예제를 게시 할 수 있습니까? (나는 '힐베르트'에 익숙하지 않다.) – m7913d

답변

0

acos(dot(a,b)/(norm(a)*norm(b)))만큼 쉽게 그들 사이 (라디안에 절대 값)의 위상 차이를 평가할 수 있습니다 isofrequential 정현파이다.

x = 0:.001:100; 
omega = 2*pi*100; 
phi = pi/6; 
s1 = sin(omega*x); 
s2 = sin(omega*x - phi); 
phase_diff = acos(dot(s1,s2)/(norm(s1)*norm(s2)));