Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

周波数解析による周期性の検出

時間測定値を見てもデータの振動動作を特徴付けることが困難な場合がよくあります。スペクトル解析は信号に周期性があるかどうかを判定し、複数のサイクルを測定するのに役立ちます。

オフィス ビルの温度計は 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

Figure contains an axes object. The axes object with xlabel Time (weeks), ylabel Temperature ( blank toThePowerOf degree baseline C blank ) contains an object of type line.

温度は振動しているように見えますが、サイクルの長さは簡単に判断できません。代わりに、信号の周波数成分に注目します。

温度の変動に集中できるよう、平均値を減算します。ピリオドグラムを計算してプロットします。

tempnorm = tempC - mean(tempC);

[pxx,f] = periodogram(tempnorm,[],[],fs);

plot(f,pxx)
ax = gca;
ax.XLim = [0 10];
xlabel('Frequency (cycles/week)')
ylabel('Magnitude')

Figure contains an axes object. The axes object with xlabel Frequency (cycles/week), ylabel Magnitude contains an object of type line.

温度には明らかに日次サイクルと週次サイクルがあります。結果は驚くにはあたりません。温度は、人が働いているときは高く、夜間および週末は低くなります。

参考

| |

関連するトピック