2013-09-26 3 views
3

저는 Matlab으로 사인파의 위상 스펙트럼을 플로팅하려고합니다. 아래에는 코드를 첨부하고, 평판이 부족하여 다이어그램을 첨부 할 수 없습니다. 크기 스펙트럼이 양호한 것처럼 보일 때, 위상 스펙트럼은 부정확 한 것처럼 보입니다. 이것은 잡음과 같습니다. 왜 그런지 알고 있니?Matlab을 사용한 사인파의 위상 스펙트럼

clear all; 

fs=8000; 
l=1000; 
t=1/fs*(1:l); 

x1=sin(2*pi()*1000*t); 
spec_x1=fft(x1,1000); 
magnitude=2*abs(spec_x1)/l; 
phase=angle(spec_x1)*180/pi; 

figure 
plot(fs/2*linspace(0,1,500),magnitude(1:500)); 
title('Magnitude spectrum'); 
xlabel('F[Hz]'); 
ylabel('Magnitude'); 

figure 
plot(fs/2*linspace(0,1,500),phase(1:500)); 
title('Phase spectrum'); 
xlabel('F[Hz]'); 
ylabel('Phase [degrees]'); 

답변

2

크기가 너무 작 으면 주파수 구성 요소의 위상이 잘못 정의됩니다 (의미가 없습니다). 각 스펙트럼 구성 요소의 위상을 무작위로 변경하고 시간 영역 (ifft)으로 다시 변환하면 여전히 사인 곡선을 복구 할 수 있습니다.

+0

감사합니다. 그게 문제 였어. 나는 한 가지 더 질문한다 : 나는 사인 곡선의 합인 신호를 만들었다 : 'x1 = sin (2 * pi() * 1000 * t); x2 = sin (2 * pi (* 2000 * t)); x3 = cos (2 * pi (* 3000 * t)); x4 = sin (2 * pi (* 3500 * t)); x5 = x1 + x2 + x4 + x3; x5의 크기 스펙트럼을 플로팅하면 4 개의 피크가 나타납니다. 그 중 3 개는 같은 값 = 1이지만, 4 번째 (3500Hz 용)는 약 0.65 값을가집니다. 이유가 뭐야? 사인 곡선의 진폭이 같은 것과 같은 값을 가져야하지 않습니까? – Pawel

+0

사인 곡선 주파수를 4000Hz (나이 퀴 스트 속도)로 올리면 사인 곡선의 표현이 덜 정확 해지며 더 넓은 범위의 스펙트럼 구성 요소에서 "흐려짐"이 발생합니다. 피크가 낮아지면 근처의 구성 요소의 진폭이 증가합니다. 사인 곡선의 총 에너지는 동일하지만 덜 정확한 표현의 결과로 더 많은 주파수를 얻습니다. 'plot (t, x4)'와 zoom in을하면 그 부정확 함을 알 수 있습니다. 다른 말로하면, sinuosoid의 일부가 노이즈로 변형되고 주파수 플롯에서 노이즈 스펙트럼을 볼 수 있습니다. –