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