分析频域中的时间序列

时间:2012-06-28 08:52:50

标签: matlab spectral

我试图用光谱分析来分析时间序列。我试图检测我的数据中的任何周期性,其中包括记录一周的每小时测量(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));

我从哪里开始?任何建议都会非常感激。

改变的:

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

有人可以建议我如何将x轴转换为小时而不是每小时的周期数?我试过了

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

但这会弄乱peridogram。

1 个答案:

答案 0 :(得分:2)

您可能会发现使用MATLAB的periodogram函数更容易,而不是尝试直接使用FFT。这将负责为您提供数据窗口以及各种其他实现细节。

相关问题