このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
周波数解析による周期性の検出
時間測定値を見てもデータの振動動作を特徴付けることが困難な場合がよくあります。スペクトル解析は信号に周期性があるかどうかを判定し、複数のサイクルを測定するのに役立ちます。
オフィス ビルの温度計は 4 か月間、30 分ごとに室温を測定しています。データを読み込み、プロットします。温度を摂氏に変換します。時間を週単位で測定します。したがって、サンプル レートは 2 測定/時間 × 24 時間/日 × 7 日/週 = 336 測定/週です。
load officetemp tempC = (temp - 32)*5/9; fs = 2*24*7; t = (0:length(tempC) - 1)/fs; plot(t,tempC) xlabel('Time (weeks)') ylabel('Temperature ( {}^\circC )') axis tight
温度は振動しているように見えますが、サイクルの長さは簡単に判断できません。代わりに、信号の周波数成分に注目します。
温度の変動に集中できるよう、平均値を減算します。ピリオドグラムを計算してプロットします。
tempnorm = tempC - mean(tempC); [pxx,f] = periodogram(tempnorm,[],[],fs); plot(f,pxx) ax = gca; ax.XLim = [0 10]; xlabel('Frequency (cycles/week)') ylabel('Magnitude')
温度には明らかに日次サイクルと週次サイクルがあります。結果は驚くにはあたりません。温度は、人が働いているときは高く、夜間および週末は低くなります。
参考
findpeaks
| periodogram
| xcorr