Найдите периодичность Используя анализ частоты

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

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

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

Смотрите также

| |

Похожие темы