2012-06-28 6 views
3

Je tente d'analyser une série chronologique avec analyse spectrale. J'essaie de détecter des périodicités dans mes données, qui sont composées de mesures horaires enregistrées pendant une semaine (24 * 7 = 168 mesures), je vise à montrer la composante diurne de la variation de température. Jusqu'à présent j'ai (par exemple):analyse de séries temporelles dans le domaine fréquentiel

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)); 

Où irais-je? Tout conseil serait très apprécié.

Altered:

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'); 

Quelqu'un peut-il suggérer comment je convertir l'axe x à quelques heures au lieu de cycles par heure? J'ai essayé

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

mais cela perturbe le péridogramme.

Répondre

2

Vous trouverez peut-être plus facile de commencer avec la fonction periodogram de MATLAB, plutôt que d'essayer d'utiliser directement la fonction FFT. Cela prend soin de fenêtrer les données pour vous et divers autres détails de mise en œuvre.

+0

Merci pour le conseil. De mon exemple modifié, comment pourrais-je modifier la mise à l'échelle de l'axe x? – KatyB

+0

Vous avez juste besoin de définir le paramètre 'fs' correctement lorsque vous appelez' periodogramme'. Si vous échantillonnez une fois par heure, alors 'fs = 1/3600'. –

Questions connexes