이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

주파수 분석을 사용하여 주기성 찾기

시간 측정값을 보고 데이터의 진동 동작 특징을 파악하기 어려운 경우가 종종 있습니다. 스펙트럼 분석은 신호가 주기적인지 확인하고 서로 다른 주기를 측정하는 데 도움이 됩니다.

사무실 건물에 있는 온도계로 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')

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

참고 항목

| |

관련 항목