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.

온도의 일일 주기와 주별 주기가 명확하게 나타납니다. 온도는 사람들이 근무할 때 더 높고, 야간과 주말에는 더 낮으므로 이는 놀라운 결과가 아닙니다.

참고 항목

| |

관련 항목