3

スペクトル分析で時系列を分析しようとしています。1 週間 (24 * 7 = 168 測定) 記録された 1 時間ごとの測定値で構成されるデータの周期性を検出しようとしています。温度変化の日周成分を示すことを目指しています。これまでのところ、(たとえば):

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

1時間あたりのサイクルではなく、x軸を時間に変換する方法を誰かが提案できますか? 私が試してみました

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

しかし、これはペリドグラムを台無しにします。

4

1 に答える 1

2

FFT を直接使用するよりも、 MATLAB のピリオドグラム関数から始める方が簡単な場合があります。これにより、データのウィンドウ処理とその他のさまざまな実装の詳細が処理されます。

于 2012-06-28T08:56:08.613 に答える