exponenta event banner

Поиск периодичности с помощью частотного анализа

Часто трудно охарактеризовать колебательное поведение в данных, рассматривая измерения времени. Спектральный анализ может помочь определить, является ли сигнал периодическим, и измерить различные циклы.

Термометр в офисном здании измеряет внутреннюю температуру каждые полчаса в течение четырех месяцев. Загрузите данные и постройте их график. Преобразуйте температуру в градусы Цельсия. Измерьте время в неделях. Таким образом, частота выборки составляет 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. The axes 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. The axes contains an object of type line.

Температура явно имеет дневной цикл и недельный цикл. Результат неудивителен: температура выше, когда люди на работе и ниже по ночам и по выходным.

См. также

| |

Связанные темы