2012-06-28 6 views
3

나는 스펙트럼 분석을 통해 시계열을 분석하려고합니다. 나는 한 주 (24 * 7 = 168 측정) 동안 기록 된 시간 단위 측정으로 구성된 데이터의 모든 주기성을 탐지하려고 노력하고 있으며, 온도 변화의 일 주성분을 표시하려고합니다. 지금까지 나는 (예를 들어) :주파수 도메인의 시계열 분석

clear all 
StartDate = '2011-07-01 00:00'; 
EndDate = '2011-07-07 23:00'; 
DateTime=datestr(datenum(StartDate,'yyyy-mm-dd HH:MM'):60/(60*24):... 
    datenum(EndDate,'yyyy-mm-dd HH:MM'),... 
    'yyyy-mm-dd HH:MM'); 
DateTime=cellstr(DateTime); 
DecDay = datenum(DateTime)-datenum(2011,0,0); 
t = 0:25/length(DecDay):(25-0.1488); 
x = sin(2*pi*50*t) + sin(2*pi*120*t); 
y = x + 2*randn(size(t)); 
Y = fft(y,length(y)); 

여기서 나는 어디로 갈 것입니까? 어떤 조언을 많이 주시면 감사하겠습니다.

는 변경된 : 나는 시간 당 시간 대신 사이클 x 축 변환 얼마나

clear all 
    StartDate = '2011-07-01 00:00'; 
    EndDate = '2011-07-07 23:00'; 
    DateTime=datestr(datenum(StartDate,'yyyy-mm-dd HH:MM'):60/(60*24):... 
     datenum(EndDate,'yyyy-mm-dd HH:MM'),... 
     'yyyy-mm-dd HH:MM'); 
    DateTime=cellstr(DateTime); 
    DecDay = datenum(DateTime)-datenum(2011,0,0); 
x = cos((2*pi)/12*DecDay)+randn(size(DecDay)); 
% if you have the signal processing toolbox 
[Pxx,F] = periodogram(x,rectwin(length(x)),length(x),1); 
plot(F,10*log10(Pxx)); xlabel('Cycles/hour'); 
ylabel('dB/(Cycles/hour'); 

누구나 제안 할 수 있나요? 나는 시도했다

plot(1./F,10*log10(Pxx)); xlabel('hours'); 

그러나 이것은 peridogram를 엉망으로 만든다.

답변

2

FFT를 직접 사용하지 않고 MATLAB의 periodogram 함수로 시작하는 것이 더 쉽습니다. 이것은 당신을위한 데이터와 다양한 구현 세부 사항을 윈도우 처리합니다.

+0

조언 해 주셔서 감사합니다. 변경된 예제에서 x 축의 비율을 변경하는 방법은 무엇입니까? – KatyB

+0

'periodogram'을 호출 할 때'fs' 매개 변수를 올바르게 설정하면됩니다. 1 시간에 한 번 샘플링하면'fs = 1/3600'입니다. –